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

c# - MassTransit - 向客户端更新消息

我没有太多使用 MSMQ 的经验,有人建议我查看 MassTransit 以帮助实施解决方案,但我很难确定使用 MassTransit + MSMQ 是否适合这项工作。

我们有一个供多个用户使用的 WPF 应用程序 (3.5)。持久性是从应用程序(通过 NHibernate)到数据库的。到目前为止,用户会定期刷新那里的视图,以确保他们有最新的更新。但是,我们现在希望在使用 pub/sub 消息传递持久化实体时向每个应用程序实例发送通知。客户端应用程序都在同一个域中运行,并且应该能够满足所需的大多数依赖项(例如在客户端计算机上安装 MSMQ)。

总结一下:Client1 发布更新消息 ---> ????? ----> 所有其他活动客户端都会收到它。

由于我是 MSMQ 的新手,我什至不确定架构应该是什么样子。

  • 是否每台客户端机器都需要有一个本地 MSMQ 队列来接收消息?
  • 我们是否只需要在服务器上创建一个队列并且所有客户端都在那里侦听消息?如果是这样,只需要一个队列就足够了,还是我们需要创建一个服务来正确分发消息?
  • 这甚至是适合这项工作的工具吗?

我创建了一个小 POC,希望它能起作用,但我最终得到了我认为被称为“竞争消费者”的东西。我想要发生的是一个应用程序实例发送一条消息,所有应用程序实例都接收它。

任何建议、方向或建议将不胜感激!

这是 POC 视图模型代码(注意 - 在我看来 localhost 将被替换为每个应用程序实例将向其发送消息的服务器):

更新:添加了网络密钥(小猫)

更新:我已经上传了示例代码 https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0ByDMJXKmYB7zMjBmYzYwNDEtYzMwOC00Y2RhLTk1MDYtZjc0NTI2M2E3Y2Qy&hl=en_US

更新:以防万一有人感兴趣,我们最终将“事件总线”分成两部分。对于服务器,我们使用 MassTransit。但是,由于 Mass Transit 需要“完整配置文件”(.NET 4.0),并且我们希望为我们的 WPF 实例坚持使用“客户端配置文件”,因此我们将 SignalR 用于客户端事件总线。服务器事件总线上的“观察者”将消息转发到客户端事件总线。

0 投票
1 回答
393 浏览

asp.net-mvc - 订阅 ServiceBus 以获取通知

今天早上我一直在阅读有关开发客户端通知系统的内容,nodeJS 似乎是我解决方案的一部分。

这个问题给了我一些想法,但我想我想要的更多一点。而且,它给我(经过一些研究)留下了关于在 Windows 服务器上使用 Redis 的问题。

Node.Js 和 ASP.NET MVC 应用程序之间的通信

所以,对于我的问题。我目前正在使用 MassTransit,我对那里的 pub/sub 很满意,但我如何通知我的客户?如果我使用 nodejs 允许像 socketio 这样的东西创建连接,我看不到我如何将节点链接到我的 mvc 层。

我将把它发布到生产 Windows 环境中,所以如果它在 Windows 上不稳定,我不能使用 redis。听起来那将是我缺失的环节。

编辑:我确实打算问一下 couchdb 是否是一个选项,它在 Windows 上是否稳定作为 redid 的替代品?

0 投票
1 回答
681 浏览

c# - 首次在调试中运行 MassTransit 时,创建队列时出错,权限不足

我有一个 MVC 站点和一个处理服务都设置为使用 MassTransit。我不得不删除队列,因为我遇到了一个问题,即当我在另一台机器上启动时没有为我创建 mt_ 队列。现在,当我运行我的应用程序时,我收到一个关于无法创建队列的错误。

我的配置;

ServiceBusQueue 设置为 msmq://localhost/sample_queue

我以前遇到过这个问题,但是当我将代码放入最终应用程序时,问题就消失了。我以管理员身份运行 Visual Studio。

我需要什么权限?我在哪里设置它们?

0 投票
1 回答
457 浏览

asp.net - 网络场的服务总线(也许?)

这个问题的一部分是我什至不确定我到底需要问什么,所以我将从情况开始并从那里开始解决。

我正在进行的一个项目涉及通过 aspComet 库使用 COMET。该程序的用例有点像协作幻灯片。一个人运行大部分,一个或多个参与者能够执行某些操作。在屏幕上执行操作之间的低延迟

以前,它只在一台服务器上运行。现在,我们希望将其扩展一点,更多的是出于可靠性而不是性能原因。所以,我们在 Rackspace 的云中提供了一些盒子和所有有趣的东西。

从一开始我就知道我需要对 COMET 的工作方式进行一些更改,因为同一“节目”中的不同人可能在不同的服务器上,而我无法知道“节目”是什么他们属于直到他们已经到达现场之后。

我最初使用 WCF Mesh 提供程序解决了这个问题,一开始并没有很好的记录,现在我遇到了向它发送消息的问题,有时会丢失或延迟(我不是 100% 确定发生了什么那里),但是它搞砸了 COMET 的长轮询并以相当奇怪的方式破坏了事情(单击按钮可能会触发一个事件,或者它会挂起 10 秒 {long poll duration} 而实际上什么都不做)。

更多的研究使我相信 .Net 服务总线提供商之一可能会满足我的需求。但是,我找不到可以涵盖我需要的示例:

  1. 无单点故障(数据库外)
  2. 没有对等点的硬编码。
  3. 近实时(无轮询,最好基于事件)

我理想的解决方案是,当一台服务器启动时,它会让其他服务器知道它的存在(即使它只是某处表格中的一行),并且它们可以开始相互发送广播消息,每台服务器都是发布者和订阅者。这就是我在 WCF Mesh 提供程序中所拥有的,但我对该代码并不太自信。

谁能指出我正确的方向?在这一点上,即使是在服务总线提供商的文档中寻找合适的术语也会很好。还是服务巴士不是我想要的?在这一点上,我会满足于在每个 Web 服务器上设置一个 Jabber 服务器并使用它,如果它可以满足我的限制。

0 投票
2 回答
3629 浏览

c# - MassTransit 中的 PubSub 示例

在阅读完 MassTransit 中的 pub/sub 项目示例后,我摸不着头脑。

在示例中,客户端应用程序向订阅者应用程序发布请求以更新虚构用户的密码。这个示例代码运行良好,并且很容易跟随这个项目的弹跳球。

然而 -

在现实环境中,发布/订阅的目的(在我的理解中)是让少数发布者与大量订阅者进行交互。在订阅者执行任何类型的 CRUD 操作的情况下,通信模式不应该阻止多个订阅者处理消息吗?例如,让 20 个订阅者尝试更新相同的数据库记录是不太理想的。

这只是一个被误导的示例项目吗?

如果 pub/sub 可用于 CRUD 操作,您如何配置框架以仅允许一个订阅者执行操作?

我只是完全错过了一些关于发布/订阅目的的基本信息吗?

感谢您提供的任何澄清...

大卫

0 投票
2 回答
3006 浏览

c# - 如何使用 Masstransit 测试基于命令和事件的系统

我有一个命令处理程序,它调用域对象上的操作,该操作又在执行操作时触发一个事件。我想测试一个事件处理程序在发送相应命令时是否接收到事件(见下文,为简洁起见省略了一些代码)。事件处理程序 (MyEventConsumer.Consume) 永远不会被调用,即使事件消息在总线上发布(在这种情况下是环回总线)。有任何想法吗?

0 投票
1 回答
2534 浏览

msmq - 如何实施竞争性消费者解决方案?

作为一个练习,我试图找到一个实现竞争消费者的例子。

许多生产者 -> MSMQueue <- 竞争消费者

到目前为止,我没有找到任何关于如何实现这一点的文档。我第一次尝试弄清楚在 MassTransit 或 NServiceBus 中是如何实现的,但多次间接失败。

任何帮助将不胜感激。

0 投票
3 回答
3928 浏览

.net - 复杂消息和 Masstransit 反序列化

我在 MT 中发布了一条消息,它有几个对象类型的属性,因为我在编译时不知道类型。当我在消费者中收到消息时,我看到对象类型的属性填充了 Newtonsoft JObject 实例。JObject 类驻留在 Masstransit.dll 中的 ILMerged Newtonsoft.Json 程序集中。此程序集中的 JObject-Class 被标记为内部的。每当我尝试将属性值转换为由 Newtonsoft.Json 的 Nuget-Assembly 提供的 JObject 时,它都会失败。

所以我的问题是:

  • 将属性值转换为 JObject 的正确方法是什么?
  • 为什么演员会失败?这意味着,clr 在这里遇到的困难是什么?
  • 我可以在我的消费者中获得原始的、未序列化的消息体吗?

谢谢你。

0 投票
2 回答
1716 浏览

masstransit - 如何配置 MassTransit 的控制台输出?

我有一个使用 MassTransit 的简单控制台应用程序。我的总线配置为使用 MSMQ。

当我启动总线并发送和接收消息时,我看到大量 JSON 涌入控制台。我假设这是通过网络传输的数据,但是如何配置此输出以及它的去向?

0 投票
1 回答
752 浏览

msmq - 第一条消息未通过 MSMQ/MassTransit 服务总线到达

我有一个通过 MSMQ 运行的 MassTransit ServiceBus。看来通过总线发送的第一条消息没有到达,但后续消息呢?

在发送消息之前,是否需要在队列或总线上执行一些初始化?