powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WebSphere MQ - асинхронное получение сообщений
2 сообщений из 2, страница 1 из 1
WebSphere MQ - асинхронное получение сообщений
    #38563550
akomlev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую !
Конфигурация - IBM WebSphere MQ - 7.1
работа идет из .Net приложения

Прошу помощи - возникла следующая проблема
Есть очередь, осуществляется подписка на очередь в 5 сессиях кодом аналогичным тому, что ниже.
При этом в MQ Explorer вижу, что у меня 5 открытых соединений к очереди.
Помещаю в очередь 7 тестовых сообщений и вижу ожидаемое поведение - 5 сообщений изъято из очереди, 2 в ней продолжают оставаться - в обработчике задержка в 20 сек.
Однако проблема в том, что фактически обработка идет в всего в два потока.
т.е. обрабатываются 1 и 4 сообщения,
затем обрабатываются 2 и 5,
затем 3 и 6...

В данный момент порядок не важен, важно что одномоментно обрабатывается не более двух сообщений, при том, что из очереди изымается 5, по количеству соединений.

Интерсное наблюдение - если для очереди изменить параметр "Последовательность доставик сообщений" с "Приоритет" на "FIFO" - то из очереди начинают выбираться по 2 сообщения. Выбралось - обработалось, выбралось следующее.

Почему только в два потока и как это регулируется ?

фрагмет кода
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
// выполняется соединени с очередью, настроки по умолчанию.
....
                ISession session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
                IDestination destination = session.CreateQueue("Q.Name");
                destination.SetIntProperty(XMSC.DELIVERY_MODE, XMSC.DELIVERY_PERSISTENT);

                /**********************************************************************************/
                IMessageConsumer consumer = session.CreateConsumer(destination);
                consumer.MessageListener = new MessageListener(OnMessage);
                connection.Start();
...

// Обработка сообщения

        static void OnMessage(IMessage msg)
        {
            if (msg.GetType().FullName == "IBM.XMS.Client.Impl.XmsTextMessageImpl")
            {
                  Console.WriteLine(">>>>>>>      "+((ITextMessage)msg).Text);
                  System.Threading.Thread.Sleep(20 * 1000);
            }
        }
...
Рейтинг: 0 / 0
WebSphere MQ - асинхронное получение сообщений
    #38564180
akomlev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После ряда доп. экспериментов получил. след зависимость
1-3 сессий, работает в один поток обработки , 4-6 - в два потока, 6-9- три потока и т.д.
Выгладит так, что из очереди выбирается столько сообщений, сколько активных подписчиков.
При этом каждый процесс обработчика резервирует для себя по три сообщения и последовательно обрабатывает. Если есть еще выбранные сообщения - запускается второй поток обработки, который тоже резервирует 3 выбранных сообщения.

Вопрос в том, где это может настраиваться ...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WebSphere MQ - асинхронное получение сообщений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]