3

请帮助我开始

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

这是我试图移动到消息队列的过程

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

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

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

一些问题

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

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

任何帮助深表感谢。

4

1 回答 1

4

如何将事务发布到队列?

如果队列是事务性队列,则在配置您的总线时,使用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

于 2012-02-27T16:06:55.437 回答