【问题标题】:pub/sub with transactions and error handling with MassTransit使用 MassTransit 进行交易和错误处理的发布/订阅
【发布时间】:2012-02-26 22:09:45
【问题描述】:

请帮助我开始

周末我一直在冲浪,对不起我的法语,没有找到我要找的东西。

这是我正在尝试移动到消息队列的进程

  • 每天晚上 pdf 文件都会登陆我们的 ftp 服务器,大约 45,000 个。
  • 对于每个文件,都会在 ms sql server 中的队列表中创建一条记录
  • 服务正在读取队列并处理磁盘上的文件。

这就是我想要的带有事务和错误处理的 pub/sub

  • 文件观察程序写入事务中的队列而不是数据库。我想这个更快。
  • 然后我想订阅 pdf- 队列,这样当有新文件时我不必轮询数据库 到了。

一些问题

  • 如何将事务发布到队列中?
  • 如何从队列中检索消息,然后在处理消息时出现错误时中止。
  • 打开/关闭队列连接的最佳方式是什么?是否有轻量级会话对象?

是的,我知道有一个简单的 pub/sub 示例 :-) 但我无法将它们粘合在一起

非常感谢任何帮助。

【问题讨论】:

    标签: transactions publish-subscribe masstransit


    【解决方案1】:

    如何将交易发布到队列中?

    如果队列是事务性队列,则在配置您的总线时,使用msmq://machine/queue_name?tx=true 以确保 MassTransit 知道它是事务性队列。现在这意味着所有涉及的机器都需要能够注册 DTC。这可能或可能不是微不足道的设置。这假定使用 MSMQ。除非您需要注册分布式事务,否则我建议您使用 RabbitMQ。

    如何从队列中检索消息,然后在处理消息时出现错误时中止。

    如果发现错误,MassTransit 支持 MSMQ 事务队列上的自动重试(5 次?)。您还可以捕获错误并使用RetryLater() 将其扔回队列中。

    打开/关闭队列连接的最佳方式是什么?是否有轻量级会话对象?

    如果您使用 MassTransit,MT 会为您处理所有连接对象。无需打开/关闭与队列的连接。

    真的,您可以在文件侦听器服务上执行Bus.Instance.Publish(new FileArrivedMessage(filename));而在消费者方面,只需注册一个Consumes<FileArrivedMessage>.All 实现。他们每个人都需要自己的队列,但应该能够很容易地进行交流。

    您也可以随时从 MT 邮件列表中获得更多帮助。 https://groups.google.com/forum/#!forum/masstransit-discuss

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多