Как я могу добавить пользовательские свойства к сообщению с Apache.NMS.ActiveMQ (C#)?

Я начинаю с ActiveMQ в C#. Я сериализую свой объект в JSON и отправляю его без проблем.

Я бы добавил свойства к своему сообщению, но мне это не удалось. Я видел setIntProperty (имя строки, значение int) на нескольких веб-сайтах, но я не нахожу его на Apache.NMS.ActiveMQ (C#).

Вот мой код:

ActiveMQ mom = new ActiveMQ();
ISession session = mom.Initialize();
IDestination dest = session.GetQueue(queueDestination);
using (IMessageProducer producer = session.CreateProducer(dest))
{
    foreach (Store s in stores)
    {
        List<string> matchKeyProductList = db.GetProductsKeyList(websiteNumberID);
        ArrayList arCodesProdToUpdate = db.GetProductsToUpdate(websiteNumberID);

        JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        serializer.MaxJsonLength = Int32.MaxValue; //Augmentation de la propriété MaxJsonLenth
        MessageObject message = new MessageObject(matchKeyProductList, arCodesProdToUpdate);
        string jsonMessage = serializer.Serialize(message);

        ITextMessage textMessage = producer.CreateTextMessage(jsonMessage);
        producer.Send(textMessage);
    }
}
mom.Cleanup();

Кто-нибудь может мне помочь с примером, пожалуйста?

1 ответ

Решение

ITextMessage наследует от IMessage, который имеет карту свойств, с несколькими применимыми методами набора. Вы должны иметь возможность установить их следующим образом перед отправкой:

ITextMessage textMessage = producer.CreateTextMessage(jsonMessage);
textMessage.Properties.SetInt("CustomInt", 1234);
textMessage.Properties.SetString("CustomString", "HelloWorld");
producer.Send(textMessage);
Другие вопросы по тегам