问题标签 [rebus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rebus - 在代码中而不是在 app.config 中配置 Rebus 路由(端点)
我想在 OneWayClientMode 中使用#rebus,同时在代码中配置端点地址,而不是通过 app.config。
这可能吗?我在流畅的配置中找不到它的踪迹。
nservicebus - ServiceBus type - queue segregation best practises
Let's say there is service bus instance working in one way mode. The service bus generates two kinds of messages: Foo and Bar. Both of these message types are to be saved in database.
So I can see two approaches for doing so:
Have two queues (FooQueue, BarQueue) and two bus instances (two processes) - one for receiving from FooQueue and one for receiving from BarQueue
Have one queue and one bus instance with two handlers for Foo and Bar messages
I would like to ask what are best practises (maybe even decision tree? :) ) for deciding when to use which approach.
Thanks in advance
rebus - 当队列不存在时,Rebus Send 方法不会抛出异常
我注意到如果队列不存在,Send(TCommand) 方法不会引发异常。我想问这是理想的行为吗?
在输出中我可以看到第一次机会异常,但我找不到在 Rebus 代码中处理它的地方。
此外,我相信它不会因为某些充分的理由而创建丢失队列,对吗?:)
如果目标队列不是事务性的,那么抛出异常不是很好吗?
提前致谢
rebus - 使用 MSMQ 的 Rebus:不稳定的交付时间
我们将 Rebus 与 MSMQ 一起用于应用程序组件之间的基于消息的通信。这些组件都在同一台机器上运行。
发送和接收消息之间的时间通常保持在 1 秒以下。但是,如果系统空闲一分钟左右(这意味着没有消息正在发送),接下来的一两条消息有时需要大约五秒钟才能传递。MSMQ 性能计数器显示这些消息在此期间保留在队列中。
对于我们的应用程序,希望消息具有恒定的传递时间(低于一秒)。
这种行为的原因可能是什么?有没有办法影响 MSMQ 或 Rebus 中消息的传递时间?我们是否应该选择其他运输类型以获得更稳定的交货时间?
rebus - 一个 rebus 进程中的多个输入队列
我正在使用 top-shelf 和 rebus 编写一个“多工”应用程序。
我的想法是使用MyWorker1Namespace
- MyWorker1Namespace.Messages
, MyWorker2Namespace
-MyWorker2Namespace.Messages
模式。
我想在不跨越多个进程的情况下运行应用程序,相反我想为应用程序配置多个输入队列,以便在必要时准备好将其拆分为多个进程。
有没有办法使用 Rebus 在一个应用程序中声明多个输入队列和多个工作线程?
我猜配置应该是这样的:
c# - 配置 Rebus,以便如果消息包含工作人员 ID,则只有该工作人员将处理该消息
我们正在运行 Rebus 作为我们批处理系统的骨干。我们有几个队列(即消息类型)可以由多个工作人员处理。每个工作人员只能处理一种消息类型。因此,例如对于 message_1,我们有 2 个工人(工人 1 和工人 2)可以处理此消息。目前,第一个空闲句柄的工作人员将处理该消息。这是默认行为并且工作良好。
我的问题是我是否可以以任何方式设置 Rebus,以便如果消息包含工作人员 ID(例如工作人员 2),则只有该工作人员应该能够处理该消息。如果消息中没有工作人员 ID,则应采用默认行为(见上文)。
rebus - 如何在 Rebus 中记录错误消息内容?
发生异常时是否有记录消息内容?
我查看了各种日志记录扩展,但它们只是记录 CorrelationId。并且消息内容不可用。
MessageContext 中有一个 CurrentMessge 属性,但在记录器写入异常时该属性不可用。
我试图处理 PoisonMessage 事件,它允许我记录消息内容。
这很好用,但是现在我在日志中有两个错误,一个来自我的处理程序,另一个来自记录器。
我想知道是否有更好的方法来处理这个要求。
.net - 具有昂贵的初始化/创建的 Rebus 和处理程序
据我所知,包括 Rebus 在内的总线的通常行为是为每个到达并匹配的消息创建一个新的处理程序。在大多数情况下这很好,但有时会有昂贵的初始化处理程序(需要实例化服务代理、连接、在缓存上加载对象等)。有一种方法可以在第一次创建这些处理程序时缓存它们,理想情况下每个工作人员一个实例,以避免一遍又一遍地创建它们?
rebus - 如何在 rebus 中实现简单的回复
我正在使用上面的代码向消费者发送消息。消费者会使用bus.Reply,但是上面的代码显然是行不通的。
我只是希望能够收到消费者的回复。这将如何实现?
c# - 暂停工作人员从队列中获取消息
我一直在尝试找出是否有任何方法可以阻止工作人员从 Rebus 队列中获取更多工作/消息?我希望能够通过我的 GUI“禁用”一个工作人员,以便它完成当前正在处理的工作(如果有的话),然后停止接受更多工作。然后,如果我希望它再次开始工作,我会通过 gui 发出信号。
我的 Rebus 工人设置如下所示: