如何从Solace队列中批量读取消息

时间:2019-06-27 03:48:30

标签: c# queue solace

是否可以从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;
..
}
```

1 个答案:

答案 0 :(得分:0)

否,没有API调用供用户批量阅读消息。

默认情况下,API已经从消息代理中批量获取消息,并且每个消息都在消息接收回调中单独传递给应用程序。 FlowProperties.WindowSizeFlowProperties.MaxUnackedMessages可以更改此行为。

每分钟20条消息非常慢。

缓慢的一个常见原因是应用程序花费很长时间来处理消息接收回调(“ OnHandleMessageEvent”)中的消息。 阻止消息接收回调将阻止API向应用程序传递另一条消息。

有关详细信息,请参见Do Not Block in Callbacks