是否可以从Solace queue
批量读取消息,而不是在回调中一个接一个地接收它们?
当前MessageEventHandler
每分钟大约收到20条消息,这对于我们的应用程序来说太慢了。
有人能更好地解决问题吗?
这是一个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;
..
}
```
答案 0 :(得分:0)
否,没有API调用供用户批量阅读消息。
默认情况下,API已经从消息代理中批量获取消息,并且每个消息都在消息接收回调中单独传递给应用程序。
FlowProperties.WindowSize
和FlowProperties.MaxUnackedMessages
可以更改此行为。
每分钟20条消息非常慢。
缓慢的一个常见原因是应用程序花费很长时间来处理消息接收回调(“ OnHandleMessageEvent”)中的消息。 阻止消息接收回调将阻止API向应用程序传递另一条消息。
有关详细信息,请参见Do Not Block in Callbacks。