问题标签 [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.

0 投票
1 回答
498 浏览

autofac - 将 Autofac 与 Rebus 一起使用时没有可用的 MessageContext

我在下面的代码中得到了 InvalidOperationException。我确信我缺乏关于 autofac IoC 和 Rebus 的知识给了我这个错误。

System.InvalidOperationException 未处理

Message=No message context available - MessageContext 实例只会在处理消息的过程中设置,并且仅在工作线程上可用。

StackTrace 的一部分:

所以当我在控制台应用程序中使用下面的代码时,我得到了上面的错误。

为了完整起见,这已添加到 app.config 中:

0 投票
1 回答
1435 浏览

rebus - 如何从 Rebus 检查错误队列

我有一个运行良好的输入队列。有时消息会进入错误队列。现在我希望能够检查这些消息,如果我知道这条特定消息会通过,可能会再次将它们转发到输入队列。

如何开始检查错误队列?有没有最佳实践?我不能只做一个.CreateBus().Start(),因为这会触发普通处理程序的处理程序。

0 投票
1 回答
588 浏览

c# - 总线实例生命周期和最佳实践

在评估一般的排队机制,特别是 Rebus 时,我提出了以下关于 Bus Instances Lifecycle 的问题:

  1. 当需要从 Windows 服务上托管的多个 WCF 服务访问总线实例(单向客户端模式)时,实例化的唯一选项是单例模式?

  2. 有一种方法可以暂停总线(停止向消息处理程序发送消息?)然后重新启动它。或者唯一的选择是处置它并创建一个新的。

    • 一个用例是当您连接到具有吞吐量限制或每小时事务限制的系统时。
  3. sagas 是否可以有多个工作人员,如果是这样并假设事件以正确的顺序发送(首先是发起者),有办法保证在处理以下事件之前首先处理发起者,用于创建 saga有多个工人?

  4. 如果在同一主机中,使用了多个 Bus 实例,并且在消息处理程序中,我们基于相同的配置在另一个总线实例上调用 send。相关ID不会被传输,回复之类的东西也不会正常工作,对吧?

我更喜欢通过代码参考/示例来具体回答 Rebus 如何支持或不支持这一点。

0 投票
1 回答
195 浏览

rebus - 是否可以关联 Rebus 中的多个属性?

是否可以关联 Rebus 中的多个属性?或者我应该将它们组合成一个相关 ID?

谢谢

0 投票
1 回答
66 浏览

rebus - 与订阅者发布的消息是否会保留在队列中?

我刚刚做了一个快速测试,似乎使用 bus.Publish 发布的消息不会在 msmq 中持续存在,直到它有订阅者。

  1. 我在配置中做错了吗?
  2. 这是设计使然吗?为什么?

谢谢

0 投票
1 回答
1570 浏览

rabbitmq - 面向消息的中间件 vs 消息队列

我想知道如何区分什么软件是面向消息的中间件,什么是消息队列?

更进一步——服务总线使用队列还是面向消息的中间件?或者服务总线本身就是面向消息的中间件?

例如,RabbitMQ 只是消息队列还是它还包含面向消息的中间件功能?

这个术语似乎是嗡嗡声和模糊的。请指教。谢谢 :)

0 投票
1 回答
638 浏览

rabbitmq - 消息队列设置

维基百科指出消息队列可以在以下特定方面进行配置:

“投递政策——我们是否需要保证一条消息至少投递一次,还是不超过一次?”

“排队标准 - 何时应将消息视为“入队”?当一个队列有它时?或者它已被转发到至少一个远程队列?或所有队列?

“消息过滤 - 一些系统支持过滤数据,以便订阅者只能看到符合某些预先指定的感兴趣标准的消息”

“接收通知 - 发布者可能需要知道部分或所有订阅者何时收到消息。”

请告诉我,在将 Rebus 与 MSMQ 或 RabbitMQ 一起使用时,我在哪里可以配置这些方面?

更新:

我还想再问一个功能:

“批处理策略 - 消息应该立即传递吗?还是系统应该稍等片刻并尝试一次传递许多消息?”

0 投票
2 回答
853 浏览

rebus - 有没有办法指定重试消息的等待时间?

有没有办法指定针对特定异常重试消息的等待时间?

例如,如果对象处于 SomethingInProgress 状态,则抛出 SomethignInProgressException 并且我希望消息在 40m 后重试。还是提出SomethingInProgressEvent并使用bus.defer更合适?

0 投票
1 回答
758 浏览

rebus - 如何在 Rebus 中指定重新传递策略和单独的重试队列处理器

我目前正在调查 Rebus,但无法找到好的文档证明这个过程很困难。我希望有人能帮助我了解这个令人兴奋的产品。

在消息处理过程中读到过,如果出现问题,消息将返回队列。

  1. 消息是返回到队列的最前面还是放在最后?如果放在前面,这将是一个问题,因为队列本质上会被一条可能无法处理的消息阻塞 - 至少直到它超时或超过重试次数。
  2. Rebus 是否支持开箱即用的单独重试队列
  3. 我可以指定重试之间的间隔吗?
  4. 我可以像在Apache ActiveMQ中那样为重试指定一个指数退避间隔吗?

谢谢

0 投票
1 回答
370 浏览

rebus - 执行集成测试的最佳方法是什么?

无论如何让rebus同步发布所有消息,以便在处理完所有消息后我可以断言某个值?

或者进行集成测试的最佳方法是什么:

  1. 发布活动
  2. 由 saga 处理,发送命令
  3. 处理命令,发布另一个事件
  4. Saga 标记为已完成
  5. 另一个事件处理程序更新数据库
  6. 断言或数据库

谢谢

问候