问题标签 [masstransit]

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 回答
3566 浏览

rabbitmq - 使用 RabbitMQ 的 MassTransit:恢复错误队列

这可能是一个非常简单的答案,但我在 MassTransit 文档或论坛中没有看到明显的解决方案。

当您有一些消息已移至 RabbitMQ 中的错误队列时,将它们放回处理队列的最佳机制是什么?此外,是否有任何内置日志记录他们最初被转移到那里的原因?

0 投票
3 回答
2004 浏览

rabbitmq - 使用 RabbitMQ 的 MassTransit:MT 在第二个请求/响应时超时

使用 MassTransit 和 RabbitMQ 处理请求/响应场景。当做一个简单的请求/回复时,它会工作多次。如果我在请求处理程序中发布一条消息,它适用于第一个请求,但请求处理程序永远不会在第二个请求上被调用并最终超时并且消息保留在服务器队列中。

好像我错过了什么;配置可能?

该项目位于https://bitbucket.org/joeyoung/enterprise-rabbitmq

客户端配置:

服务器配置:

发送请求:

消费请求:

讯息:

0 投票
1 回答
2377 浏览

c# - MassTransit中如何保证消息接收顺序

我有一个有 3 个状态的传奇;初始、接收行、已完成 -

当它收到 BofMessage(其中 Bof = 文件开头)时,它从 Initial 转换为 ReceivingRows。在 BofMessage 之后,它会接收大量 RowMessage,其中每个都描述平面文件中的一行。发送完所有 RowMessage 后,将发送 EofMessage 并且状态更改为 Completed。观察 -

这可行,除了有时在 BofMessage之前收到几个RowMessage!这与我发送给他们的顺序无关。这意味着消息将被接收并最终计为错误,导致它们从我最终将它们写入的数据库或文件中丢失。

作为一个临时修复,我在这个方法中添加了一个小睡眠定时器技巧来完成所有的发布——</p>

这是一个 5 秒的睡眠定时器,而且是一个非常丑陋的 hack。谁能告诉我为什么我没有按照发送顺序收到消息?如果默认情况下这些消息是无序的,我能否确保这些消息以正确的顺序发送?

谢谢!

请注意,为了方便起见,这是从http://groups.google.com/group/masstransit-discuss/browse_thread/thread/7bd9518a690db4bb交叉发布的。

0 投票
2 回答
883 浏览

nhibernate - 如何使用将项目添加到 NHibernate 持久 IList 的 MassTransit Saga 确保良好的性能

我有一个有 3 个状态的传奇 -

当它收到 BofMessage(其中 Bof = 文件开头)时,它从 Initial 转换为 ReceivingRows。在 BofMessage 之后,它会接收大量 RowMessage,其中每个都描述平面文件中的一行。发送完所有 RowMessage 后,将发送 EofMessage 并且状态更改为 Completed。观察 -

这有效,只是它具有 n 平方性能。使用 NProf 进行调查显示,每行添加都会导致整个行列表为:

a) 从数据库中选择

B) 从数据库中删除

C) 重新插入数据库。

这对我来说似乎是非常糟糕的行为。添加一行所需要做的就是……好吧,向数据库中添加一行!添加操作实际上是我对行列表所做的唯一事情。当我们在列表中有 10,000 个项目时,这不会扩展。

有谁知道如何让这个传奇更加理智的表现行为?

顺便说一句-如果需要,这是 IList 的映射方式-

谢谢!

0 投票
1 回答
942 浏览

c# - 使用 RabbitMQ 的 MassTransit - RecieveFrom 的地址

我们在测试环境中配置了一个主动/主动的 RabbitMQ 集群。

我们使用 MassTransit 指定 ReceiveFrom("rabbitmq://cluster_machine_a/some_queue?ha=true") 进行连接。

显然,这是利用特定的集群节点,因此不提供故障转移。

向 MassTransit 通知集群节点以便发生故障转移的正确方法是什么?

RabbitMQ 文档表明客户端应该使用传统的负载均衡器来收集流量,但是这适用于 RabbitMQ 吗?(最后一节 - http://www.rabbitmq.com/clustering.html

0 投票
1 回答
2179 浏览

msmq - MassTransit MSMQ Pub 与多子。RuntimeServices 什么时候准备好?

我设置了一个简单的测试,包括一个发布者和两个订阅者,所有订阅者都在使用 MSMQ 和 MassTransit (2.1.1) RuntimeServices 的单台机器上运行,后者使用本地 Sql Server 数据库。

我在下面包含了总线设置代码,因此您可以查看设置的内容。我正在手动和独立地启动每个组件,以尝试锻炼如果订阅者没有运行会发生什么。

我首先运行了两个订阅者,因此队列和订阅都已设置好,然后将它们都退出,而无需取消订阅消息。如果然后我自己运行发布者,它会尽可能快地在队列中转储 400 条消息,我可以看到两个订阅者队列有不同数量的消息等待。

我的假设是我在 RuntimeServices 能够自行设置两个目标队列之前发布。在总线设置和发布之间有 5 秒的延迟,我得到了我期望的 400 条消息在两个订阅者队列中等待,即一些消息没有发布到两个队列。

我的问题是这个;当发布者启动时,有没有办法判断 RuntimeServices 是否已准备好其数据库中已有的订阅者?

这是发布者代码

订阅者是这样配置的;

...和第二个订阅者...

提前感谢您的任何建议。

0 投票
2 回答
2039 浏览

.net - 未来的 MassTransit 流程消息

我正在为一个项目评估带有 RabbitMQ 的 MassTransit,我们希望能够将消息的处理延迟到某个时间。

目标如下:

  • 一个用户做了一些影响其他用户的事情
  • 一小时后会向公交车发送一条消息通知受影响的用户
  • 用户做更多事情并发送更多通知
  • 一个小时过去了,然后:
    • 自上次摘要以来已经过去了一个多小时:消息已处理,收集每个用户的所有待处理通知,如果至少有一个,则向他们发送摘要。
    • 距离上次总结不到一小时:消息未处理,又排了一个小时。

问题是可以通知很多事情,所以我们不想立即发送,而是稍后总结。这可以用 MassTransit 和 RabbitMQ 完成吗?

0 投票
1 回答
2255 浏览

c# - 来自 MassTransit/RabbitMQ 中负载平衡应用程序的竞争消费者

我刚刚创建了一个 API,其中来自 API 的请求使用请求/响应模式通过 MassTransit/RabbitMQ 转发到后端服务。我们现在正在考虑将其推向生产,并希望在不同的服务上运行应用程序的多个实例(API 和服务),并使用负载均衡器在它们之间分配请求。

这使我们处于一个位置,如果其中一台服务器出于任何原因从池中取出,我们可能会丢失所有消息。我正在考虑在服务器之间创建一个 RabbitMQ 集群(每个服务器都有一个本地安装),并且想知道在这种情况下我将如何设置竞争消费者。

RabbitMQ 或 MassTransit 是否会处理此问题,以便只有一个消费者会收到请求,还是所有消费者都会收到并尝试响应?此外,对于 RabbitMQ 集群,MassTransit/RabbitMQ 如何处理节点故障?

0 投票
1 回答
2359 浏览

c# - 消息在公共交通中无法到达订阅者

我有两个项目在不同的进程中运行,RMQ 部署在单独的机器上。

这是我的发布者代码

这是我的订阅者代码:

在服务器中,我有以下订阅:

当我通过发布者发送一组消息时,只有少数消息成功到达订阅者。他们中的大多数都属于响应队列错误。

我是新来的公共交通,我不明白里面发生了什么,也不明白我怎么能弄明白。

在这种情况下你有什么可以推荐的吗?

0 投票
2 回答
869 浏览

appharbor - 使用 AppHarbor 和 CloudAMQP 在云中进行 MT

有人成功让 MassTransit 与 AppHarbor 和 CloudAMQP 合作吗?

我对它感到很厌烦。

我让发布者(网站)发送消息,但服务器(后台工作人员)似乎没有接收它们。

我担心的一件事是 MT 需要 rabbitmq 方案,而 CloudAMQP 将方案设置为 amqp。

我在配置总线时正在交换方案(从 amqp 到 rabbitmq),并注意到消息地址中的方案是 rabbitmq,这是有道理的,因为我替换了它们。但我想知道他们是否必须是 amqp 才能让服务器接他们?

这是我发送的一条简单消息,它到达了 RabbitMQ,但服务器没有接收到它。

谢谢,乔

编辑:感谢卡尔指出网址中的密码