Как установить идентификатор группы сообщений в activemq mapmessage в переполнении стека

Я пишу производитель activemq на C ++, который пишет сообщение карты в очередь activemq на платформе .net. Я использую NMSXGroupID (of the ActiveMQMapMessage type) направить сообщение соответственно на .net сторона, когда я потребляю одно и то же сообщение.

    private MyBytesMessage GetMyMessage(IMessage sourceMsg)
{
if (sourceMsg == null)
return null;

MyBytesMessage myMessage = null;
ActiveMQMapMessage bMessage = sourceMsg as ActiveMQMapMessage;
if (bMessage != null)
{
if (bMessage.Body.Keys.Count > 0)
{
byte[] messageBody = bMessage.Body.GetBytes("body") as byte[];
if (messageBody != null)
{
myMessage = new MyBytesMessage(messageBody);
myMessage.MessageGroupID = bMessage.NMSXGroupID;
}
}
}
return myMessage;
}

Я хочу установить тот же идентификатор со стороны C ++, когда я пишу сообщение.

0

Решение

Поскольку клиент C ++ ActiveMQ реализует API CMS, который позволяет вам устанавливать значения идентификатора группы с помощью средств доступа к свойствам сообщения. Вы можете проверить класс метаданных соединения для списка всех свойств, которые могут использоваться точно так же как в JMS.

Чтобы установить значение идентификатора группы, вам нужно использовать свойство JMSXGroupID следующим образом:

  message->setStringProperty("JMSXGroupID", GROUPID);
1

Другие решения