问题标签 [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.
autofac - 将 Autofac 与 Rebus 一起使用时没有可用的 MessageContext
我在下面的代码中得到了 InvalidOperationException。我确信我缺乏关于 autofac IoC 和 Rebus 的知识给了我这个错误。
System.InvalidOperationException 未处理
Message=No message context available - MessageContext 实例只会在处理消息的过程中设置,并且仅在工作线程上可用。
StackTrace 的一部分:
所以当我在控制台应用程序中使用下面的代码时,我得到了上面的错误。
为了完整起见,这已添加到 app.config 中:
rebus - 如何从 Rebus 检查错误队列
我有一个运行良好的输入队列。有时消息会进入错误队列。现在我希望能够检查这些消息,如果我知道这条特定消息会通过,可能会再次将它们转发到输入队列。
如何开始检查错误队列?有没有最佳实践?我不能只做一个.CreateBus().Start()
,因为这会触发普通处理程序的处理程序。
c# - 总线实例生命周期和最佳实践
在评估一般的排队机制,特别是 Rebus 时,我提出了以下关于 Bus Instances Lifecycle 的问题:
当需要从 Windows 服务上托管的多个 WCF 服务访问总线实例(单向客户端模式)时,实例化的唯一选项是单例模式?
有一种方法可以暂停总线(停止向消息处理程序发送消息?)然后重新启动它。或者唯一的选择是处置它并创建一个新的。
- 一个用例是当您连接到具有吞吐量限制或每小时事务限制的系统时。
sagas 是否可以有多个工作人员,如果是这样并假设事件以正确的顺序发送(首先是发起者),有办法保证在处理以下事件之前首先处理发起者,用于创建 saga有多个工人?
如果在同一主机中,使用了多个 Bus 实例,并且在消息处理程序中,我们基于相同的配置在另一个总线实例上调用 send。相关ID不会被传输,回复之类的东西也不会正常工作,对吧?
我更喜欢通过代码参考/示例来具体回答 Rebus 如何支持或不支持这一点。
rebus - 是否可以关联 Rebus 中的多个属性?
是否可以关联 Rebus 中的多个属性?或者我应该将它们组合成一个相关 ID?
谢谢
阴
rebus - 与订阅者发布的消息是否会保留在队列中?
我刚刚做了一个快速测试,似乎使用 bus.Publish 发布的消息不会在 msmq 中持续存在,直到它有订阅者。
- 我在配置中做错了吗?
- 这是设计使然吗?为什么?
谢谢
rabbitmq - 面向消息的中间件 vs 消息队列
我想知道如何区分什么软件是面向消息的中间件,什么是消息队列?
更进一步——服务总线使用队列还是面向消息的中间件?或者服务总线本身就是面向消息的中间件?
例如,RabbitMQ 只是消息队列还是它还包含面向消息的中间件功能?
这个术语似乎是嗡嗡声和模糊的。请指教。谢谢 :)
rabbitmq - 消息队列设置
维基百科指出消息队列可以在以下特定方面进行配置:
“投递政策——我们是否需要保证一条消息至少投递一次,还是不超过一次?”
“排队标准 - 何时应将消息视为“入队”?当一个队列有它时?或者它已被转发到至少一个远程队列?或所有队列?
“消息过滤 - 一些系统支持过滤数据,以便订阅者只能看到符合某些预先指定的感兴趣标准的消息”
“接收通知 - 发布者可能需要知道部分或所有订阅者何时收到消息。”
请告诉我,在将 Rebus 与 MSMQ 或 RabbitMQ 一起使用时,我在哪里可以配置这些方面?
更新:
我还想再问一个功能:
“批处理策略 - 消息应该立即传递吗?还是系统应该稍等片刻并尝试一次传递许多消息?”
rebus - 有没有办法指定重试消息的等待时间?
有没有办法指定针对特定异常重试消息的等待时间?
例如,如果对象处于 SomethingInProgress 状态,则抛出 SomethignInProgressException 并且我希望消息在 40m 后重试。还是提出SomethingInProgressEvent并使用bus.defer更合适?
rebus - 如何在 Rebus 中指定重新传递策略和单独的重试队列处理器
我目前正在调查 Rebus,但无法找到好的文档证明这个过程很困难。我希望有人能帮助我了解这个令人兴奋的产品。
我在消息处理过程中读到过,如果出现问题,消息将返回队列。
- 消息是返回到队列的最前面还是放在最后?如果放在前面,这将是一个问题,因为队列本质上会被一条可能无法处理的消息阻塞 - 至少直到它超时或超过重试次数。
- Rebus 是否支持开箱即用的单独重试队列?
- 我可以指定重试之间的间隔吗?
- 我可以像在Apache ActiveMQ中那样为重试指定一个指数退避间隔吗?
谢谢
rebus - 执行集成测试的最佳方法是什么?
无论如何让rebus同步发布所有消息,以便在处理完所有消息后我可以断言某个值?
或者进行集成测试的最佳方法是什么:
- 发布活动
- 由 saga 处理,发送命令
- 处理命令,发布另一个事件
- Saga 标记为已完成
- 另一个事件处理程序更新数据库
- 断言或数据库
谢谢
问候
阴