Как массово читать сообщения из очереди Solace - PullRequest
0 голосов
/ 27 июня 2019

Возможно ли массовое чтение сообщений из Solace queue вместо их получения по одному при обратном вызове?

В настоящее время MessageEventHandler получает около 20 сообщений в минуту, это слишком медленно для нашего приложения.

У кого-нибудь есть лучшее решение, чтобы ускорить процесс в Solace?

Это приложение C#.
Мы использовали

ISession.CreateFlow(FlowProperties, IEndpoint, ISubscription,
EventHandler<MessageEventArgs>, EventHandler<FlowEventArgs>)

Передача MessageEventHandler, который получает сообщение через MessageEventArgs.Message

queue = CreateQueue();  
Flow = Session.CreateFlow(flowProperties, queue, null, OnHandleMessageEvent, OnHandleFlowEvent);

..
void OnHandleMessageEvent(object sender, MessageEventArgs args)
{
var msgObj = args.Message.BinaryAttachment;
..
}
```

1 Ответ

0 голосов
/ 16 июля 2019

Нет, пользовательский вызов API не вызывается для массового чтения сообщений.

По умолчанию API уже получает сообщения от посредника сообщений в пакетном режиме, причем каждое сообщение индивидуально доставляется приложению всообщение получает обратный вызов.FlowProperties.WindowSize и FlowProperties.MaxUnackedMessages могут изменить это поведение.

20 сообщений в минуту чрезвычайно медленно.

Одна из распространенных причин медлительности заключается в том, что приложению требуется много времени для обработки сообщений всообщение получает обратный вызов («OnHandleMessageEvent»).Блокировка обратного вызова при получении сообщения не позволит API доставить другое сообщение приложению.

Подробнее см. Не блокировать в обратных вызовах .

...