问题标签 [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 回答
155 浏览

messaging - 强制消息处理程序丢弃多个请求消息的最佳方法是什么

抱歉标题含糊不清 - 我想不出一个简洁的方法来问这个问题。我认为一个具体的例子会有所帮助。

我有一个资源密集型流程,我想转移到一个单独的服务中,然后发送一条消息来启动它。消息将通过单击网站上的按钮发送(在第一次迭代中)。

问题是要求单击按钮十次不会运行该进程十次甚至排队十次运行该进程,因为它是如此的资源密集型。我们的产品经理希望在进程运行时,基本上丢弃任何其他消息。但是,一旦进程完成并释放资源,消息传递端点将处理请求消息并再次运行该进程。

我们目前正在使用阻塞和丢弃消息的信号量来解决这个问题,但我总是对并行处理和线程保持警惕。

我认为 saga 可能是处理此问题的好方法,因为您可以让您的 saga 由请求消息开始,然后任何其他进入的人只会打开现有的 saga 实例,该实例将对这些附加消息执行无操作. 当 saga 完成时,请求该进程的下一条消息将启动一个新的 saga。

我也知道您可以在进程运行时禁用按钮,但如果可能的话,我们希望避免将按钮临时耦合到进程。这意味着,我们宁愿不从网站轮询该过程以查看它是否已完成。

是否有一种行业标准或优雅的方式来处理这个我可能没有想到的?如果可能的话,我真的很想避免并行性和信号量,但我也不想让我的解决方案过于复杂。任何帮助表示赞赏。

如果您可以提供 MassTransit 特定信息,因为那是我正在使用的 ESB,则可以加分。

0 投票
1 回答
251 浏览

msmq - masstransit msmq web garden 不再发送消息

我已经运行 masstransit / msmq 一段时间了,没有任何问题,使用它从 asp.net mvc 应用程序向 Windows 服务发送消息。

我的全局 asax 在 OnApplicationStarted 事件中包含以下内容:

请注意,此总线配置为仅发送消息,它不接收任何内容。这个很重要。

最近我们在 IIS 中实现了一个网络花园。这是当您将工作进程的数量增加到超过 1 时。它通过旋转站点的多个副本为您获得一些性能。这就是问题所在。

Masstransit 只允许每个队列有一个实例,并且自从我们创建了我们的网络花园以来,消息传递就间歇性地停止工作。我猜它有时会起作用,因为我很幸运能够通过主动访问队列来访问站点实例。

但是就像我之前提到的,队列无论如何都没用,我从不使用它来接收任何东西。我想知道是否有某种方法可以将其转换为仅发送总线,在那里我发布消息但从不接收它们?

在短时间内,我在队列名称的末尾添加了一个 Guid.NewGuid(),它确实开始工作了。唯一的问题是每次我们重新启动站点时它都会创建 10 个新队列。这显然不是真正的永久解决方案。

0 投票
1 回答
1479 浏览

.net - 简单的 MassTransit/RabbitMQ 示例不起作用

我敢肯定,对于任何具有 MT/RMQ 基本知识的人来说,这都是一件容易的事。

我从网上获取了一个简单的客户端/服务器示例,我试图让它在我的机器上本地工作,但是我没有运气。我有 RabbitMQ 网络管理显示我的“客户端”消息正在发布,但是我的“服务器”没有接收这些消息。

这是我的代码:

作为参考,我正在运行 Windows 8(64 位)。除了安装 Erland 和 RabbitMQ 之外,我还没有配置 Windows - 也许我错过了安装步骤?

谢谢您的帮助

0 投票
1 回答
116 浏览

masstransit - 消耗。为了不工作

我知道使用 MassTransit,您可以在消息上使用关联 ID,并且您只能使用具有相同关联 ID 的消息。

我在控制台应用程序中执行了此操作,但它不起作用,即使具有不同的相关 ID,它也会获取所有消息。实际上我的“CorrelationId”属性从未被调用过。

谢谢

0 投票
2 回答
158 浏览

rabbitmq - Two service buses in one application?

I am using MassTransit with RabbitMQ.

Here's a summary of what happens.

  1. ORDER SERVER which is an application that gets orders and publishes (with MassTransit) Order message.

  2. PROCESSING UNIT which is an application that consumes Order message and do some process on it and then publishes OrderProcessed.

so here PROCESSING UNIT is both consuming and publishing.

In blogs, documentation and forums I read that every app has to have a queue for itself, I did that but still bunch of messages (approximately %30) will go to error queue and WHEN I do it with two queues on PROCESSING UNIT it works just fine. (means processing unit has one IServiceBus with different queue just for consuming, and another one just for publishing)

I was wondering if my design is right. I feel like it shouldn't be like this.

Thanks,

Peyman

0 投票
1 回答
599 浏览

castle-windsor - 使用 IoC 解析 IServiceBus

我使用 MassTransit 进行消息队列(使用 RabbitMQ),Castle Windsor 作为我的 IoC,Topshelf 将我的应用程序作为 Windows 服务运行。

但是我遇到了这个对我来说很奇怪的问题。

这是我的代码

我有服务

这是我的主要代码(设置 Topshelf 在哪里)

该代码仅在调试时才起作用,但是当我将其作为服务运行时,它会在解析服务总线时停止,没有例外,直到 Windows 说它没有响应控制功能。请注意,它第一次有效,第二次无效,第三次有效,依此类推。

我不明白为什么,但是当我在 IoC 之外创建 IServiceBus 时,它的效果很好。

谢谢

佩曼

0 投票
1 回答
815 浏览

masstransit - MassTransit 中的 Consumes.For、Consumes.Selected、Consums.All 和 Consumes.Context 有什么区别?

我已经开始研究 MassTransit 并正在编写将处理消息的类。当我实现接口时,我Consumes<T>得到四个选项:AllSelected和。这四个有什么区别,什么时候应该使用它们?For<T>Context

0 投票
1 回答
2709 浏览

rabbitmq - MassTransit:使用虚拟主机指定 uri

我将MassTransitRabbitMQ一起使用,我想利用RabbitMQ虚拟主机。我组织中的其他应用程序(不使用 MassTransit)具有为环境设置虚拟主机的约定,即“myapp”和“myappUAT”。我需要遵循这个约定,但我不知道如何在我的 MassTransit uri 中指定虚拟主机。

这可能吗?如果是这样,我该怎么做?

0 投票
1 回答
591 浏览

wcf - WCF AsyncPattern 和公共交通请求/响应

我尝试通过公共交通请求/响应实现异步服务操作 ( http://msdn.microsoft.com/en-us/library/ms731177.aspx )。

但 EndPublishRequest 抛出异常“参数不是 IRequest”。难道我做错了什么?

0 投票
1 回答
262 浏览

asp.net - MassTransit RuntimeServices RabbitMQ - 将其与 NuGet MassTransit 安装集成?

我有一个将 MassTransit 和 RabbitMQ 用于消息传递总线的 ASP.NET 项目,我正在尝试实现 MassTransit Sagas,我想使用 Saga 的 ScheduleTimeout 功能,这需要 MassTransit.RuntimeServices (TimeoutService)。

但是,据我了解,MassTransit 的 NuGet 安装不包括 RuntimeServices,这对我来说似乎很愚蠢,但好吧。

因此,我尝试将 MassTransit.RuntimeServices 和 MassTransit.RuntimeServices.Database 提取出来并将其直接包含在我的项目中,这会导致许多错误,包括无法解析或恢复的引用以及在其中普遍使用 msmq 而不是 rabbitmq运行时服务。

在我一起破解它以停止引用错误并尝试用 rabbitmq 引用替换 msmq 后,该应用程序在运行时引发异常,然后完全破坏了我的应用程序,需要卸载 RuntimeServices 项目并重新启动服务器。

有没有人知道如何将 RuntimeServices 集成到使用 Rabbit MQ 而不是 MSMQ 的 NuGet 安装版本的 MassTransit 中?

谢谢