我有一个azure service bus主题订阅,其中消息不断涌现。
下面的代码主要是一次接收一条消息,并对其进行处理,并将相关结果存储到数据库中。
我试图将MaxConcurrentCalls设置为10
,但由于数据库工作设计的原因,它耗尽了数据库连接池。
所以我想一次从订阅中获取10个消息(在一批N个消息中接收),并希望用一个数据库调用来处理。
我没有看到任何批处理api选项,这可能吗?
我使用的是Microsoft.Azure.ServiceBus
nuget版本4.1.1
。
_subscriptionClient = new SubscriptionClient(connectionString, topicName, subscriptionName);
// Register the callback method that will be invoked a message of interest is received
_subscriptionClient.RegisterMessageHandler(
async (message, token) =>
{
if (await ProcessMessage(message, token))
{
await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
}
},
new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 1, AutoComplete = false });
这里有预取的概念:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-informations?tabs=net-framework-sdk#预取
预取使队列或订阅客户端能够在执行接收操作时从服务加载其他消息。
我遵循这篇文档来实现上述场景。 那么,有没有人可以建议我如何一次使用多个订阅者从主题中读取消息。
我按照本教程阅读来自给定订阅的消息。我创建了一个像这样的接收类- 在执行这个程序时,我得到了这个错误- 错误指向此行-还想知道像这样提供我的主题和订阅名称-是否合适。 很抱歉发了这么长的帖子。
我有一个调查多个主题的消费者。对于这个问题,我限制了每个主题一个分区。假设当消费者开始轮询时,每个主题都有一些数据。阅读的顺序是什么? 是循环赛吗?它是从第一个读到下一个吗?我使用进行轮询。
我有以下代码 我的问题:当我添加多个主题订阅时(即上面的A,B,C),Kstream代码停止接收记录。 参考文献:https://kafka.apache.org/10/javadoc/org/apache/kafka/streams/StreamsBuilder.html 相关文件 我想实现的是:让一个Kstream(即上面的“源”)消耗/处理多个主题。
我有一个超时选项,只想在超时前接收消息。 如果您能解释下面的代码是如何工作的,以及我如何修改下面的代码以在特定的时间框架内接收消息,并且一旦我的超时已经到达就停止接收,这将是很有帮助的。
首先,我知道这里已经有一个类似问题的答案了,但我仍然不能确定这是因为RabbitMQ的不可能,还是因为我研究得不够。 我来自事件pub/sub模式是这样工作的JS/Node背景:当许多消费者用pub/sub模式订阅同一个主题时,无论何时某个生产者发布它,所有人都应该得到相同的消息。 我希望用消息代理实现相同的模式。 例如: 生产者%1发布到主题 生产者2发布到主题 RabbitMQ的实际操作(根据