问题标签 [nservicebus4]

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

nhibernate - NServiceBus 4.6.5 NHibernate Saga Persister 不持久化 Saga 数据

我将 NServiceBus 与 NHibernate 一起使用,并在我自己的进程中托管总线。我正在使用的配置是:

和:

此配置在我的 SQL Server 数据库中为我的 saga 创建表,其中包含我在我的 saga 中指定的字段,这很棒。

但是,当我的 Saga 运行并完成时,NServiceBus 似乎没有将记录插入到我的 saga 表中。

表格在那里,只是没有数据。

这应该预期吗?saga 成功完成后,NServiceBus 是否会删除持久性中的 saga 条目?

0 投票
3 回答
742 浏览

testing - 使用内存中的 NServiceBus 进行测试

我正在尝试在我的解决方案中创建一个高级测试,并且我想“捕获”发送到总线的消息。

这就是我所做的:

  1. nUnit [SetUp] 在 IISExpress 中启动 WebAPI 项目
  2. SetUp 还会创建总线
  3. 向 API 发送 HTTP 请求
  4. 验证我想验证的任何内容

整个测试的 WebAPI 部分运行良好。公共汽车的创建和启动似乎也很棒。它甚至可以找到我的假消息处理程序。问题是处理程序永远不会收到来自队列的命令,它们只是永远留在 RabbitMQ 队列中。

以下是总线的配置方式:

在 NServiceBus 启动的日志中,我看到我的假处理程序与命令相关联:

因此,当消息到达正确的 RabbitMQ 队列时,我假设一切都在处理程序点正常工作之前。

我已经尝试在我的 [TearDown] 中放置等待,以便总线寿命更长一些 - 希望给处理程序时间来接收消息。我还尝试将交互的消费者部分的内存总线分离到一个新线程中,但没有成功。

有没有其他人试过这个?

这只是第一步,我想做的是创建一个记录发送给它的消息的假总线。RabbitMQ 的需要只是为了让自己继续前进(我的解决方案的范围是前面的 WebAPI 和后面的总线)。

干杯

0 投票
2 回答
322 浏览

nservicebus - 使用 NServiceBus 引发数据库触发事件的推荐方法是什么?直接 SQL Service Broker 集成不再可行吗?

我的团队目前处于在许多不同的上下文中使用 NServiceBus(v4,可能是 v5)设计实现的初始阶段,以促进我们的许多自定义应用程序之间的集成。然而,我们也想利用 NServiceBus 来引发由我们一些现成的第三方系统触发的业务事件。这些系统不提供固有的消息传递或事件 API,因此我们目前的想法是使用触发器和潜在的 SQL Service Broker 作为连接到 NServiceBus 的桥梁来连接到它们的底层数据库。

我看过ServiceBroker.net但这似乎通过创建一个全新的 ITransport 来使用 NServiceBus v2 或 v3 api、接口等。不过,我们计划使用更新版本的 NServiceBus,所以这似乎不是一个可靠的选择。SO 上的其他一些类似的问题(都是几年前的问题)似乎可以通过简单使用 SQL 传输的指导来回答。这使用基于表的伪队列而不是 MSMQ,但尚不清楚是否建议让 SQL 触发器手工制作 NServiceBus 消息记录并直接将它们手动插入到伪队列表中,或者是否仍然存在在中间使用 SQL Service Broker 以某种方式更本机地将 NServiceBus 消息弹出到总线上。如果以某种方式使用 SQLTransport 是答案,

几年前似乎有一些关于 SQL Service Broker 桥接到 NServiceBus 的协调运动,但在引入本机 NServiceBus SQLTransport 后就被弃用了。我觉得也许我在现代 NServiceBus 方法方面遗漏了一些东西,该方法在比循环轮询设计更实时的设计中生成数据驱动事件。

0 投票
1 回答
881 浏览

nservicebus - NServiceBus 中的 Sql Server Transport 有什么限制?

我试图让VideoStore.NHibernateNServiceBus 示例(来自Github)使用SqlServerTransport而不是 MSMQ 工作(我们不想依赖 MSMQ 或 RavenDb)。

通过执行以下操作,我已将此示例切换为使用 SqlServerTransport 而不是 MsmqTransport:

  • 为 NserviceBus.SqlServer 添加适当的 NuGet 包
  • 将适当的连接字符串添加到每个 app/web.config

当我使用这些新设置运行示例时,我注意到NServiceBus.ExtensionMethods 静态类有一个调用的方法,当我切换到 SqlServerTransport 时SetMessageHeader会抛出一个:InvalidOperationException

这是否意味着SqlServerTransport不支持消息头?

SQL Server 传输不支持与我们的决定相关的其他任何内容吗?

是否有可用的功能/传输矩阵?

更新:

好吧,也许我在这里跳过了枪。https://github.com/Particular/NServiceBus.SqlServer.Samples似乎暗示 SqlServerTransport 确实支持消息头和 Sagas。

更新二

看来您对持久性 (NHibernatePeristence) 和传输 (SqlServerTransport) 使用相同的数据库会导致问题。为每个角色使用单独的数据库似乎已经解决了这个问题。

我仍然想知道在功能支持方面使用 SqlServerTransport 是否有任何缺点?

0 投票
1 回答
272 浏览

.net - 在 NServiceBus 中,我可以同时使用 Pub/Sub 消息传递和全双工吗?

我们想使用 NSB (NServiceBus) 来开发我们的应用程序。我们有一堆(约 6 个)服务将与 NSB 挂钩,并且发布/订阅模式非常有意义。但是,还有一个配置服务,我们需要一个简单的请求/回复(全双工)模式来从本地数据库或中央远程数据库服务器获取配置数据(设置、权限等)。

因此客户端会请求配置数据并立即返回结果,这在将 NSB 与 pub/sub 设置一起使用时是非法的(根据手册)。

有没有办法使用 NSB 来做到这一点,而不会失去 SLR 和容错、错误队列等酷炫的功能?还是我只需要完全绕过 NSB 并创建一个简单的 WCF 服务?

谢谢你。

0 投票
2 回答
1165 浏览

.net - 一个 EndPoint 一个 NServiceBus.Host,推荐的方法是什么

鉴于在线文档,我正在尝试了解 NServiceBus。我无法理解的是基础设施的整体推荐设置。我们的应用程序应该能够同时运行单台机器和跨多个(逻辑上不同的)站点(n 个商店-1 个总部)。至于 NServiceBus(我通过 NuGet 使用 v5),我并不完全理解主机和端点的概念。

假设我们有 15 项服务(订单服务、商品服务等)。

  1. 我是否需要 15 个客户端(15 个类库项目,代码通过总线发送消息)和 15 个服务器(一个或多个接收消息处理程序类,处理特定于服务的消息/命令)?所以总共30个。

  2. 每个服务都应该使用自己独立的 MSMQ 吗?

  3. 对于这 15 个“服务器”项目,在生产环境中我需要安装 NServiceBus.Host 15 次(因此创建了 15 个 Windows 服务实例)。在 VS 中调试时,NSerivceBus.Host.exe 将在您开始调试时启动。

因此,您有效地为每个主机/服务器项目“托管”一个端点。或者我可以在其中有一个主机和 15 个端点吗?

您可以说我是这个 ESB 模式的新手,所以感谢您的意见。

0 投票
1 回答
783 浏览

.net - 使用 SimpleInjector 和 NServiceBus 注入 IBus Bus 属性

我正在尝试使用它自己的依赖注入容器和SimpleInjector 来熟悉NServiceBus 5,这是我们选择的容器。

有一种方法可以告诉 NServiceBus 注入

IBus 总线 {get;set;}

属性到所有 ASP.NET MVC ApiControllers(或其他地方)使用自定义NServiceBusControllerActivatorNServiceBusDependencyResolverAdapter.

但是,我们想使用 SimpleInjector,并且没有 MVC 应用程序,并且我们不想将 Bus 直接注入控制器。控制器应该是轻量级的,所以逻辑在“服务”内部,然后调用Bus.Send(message).

您将如何Bus使用 SimpleInjector 完成注入属性? 我知道人们曾尝试使用 NServiceBus 配置 SIMpleInjector,但他们就是不能一起工作。

0 投票
1 回答
2535 浏览

msmq - NServiceBus 不自动创建队列 (MSMQ)

我正在做来自 NServiceBus 网站(http://docs.particular.net/samples/step-by-step/)的示例,当我在 Visual Studio 中运行时,一切正常并且自动创建队列(即使我删除它们并重新运行解决方案,而不是自动创建)。开发机器运行 Windows 8。

我有一个模拟的 Windows 2008 RC2 - 当我将解决方案 bin 文件夹带到服务器计算机并尝试运行 NServiceBus.Host.exe 时,它​​最终崩溃,原因是:“队列不存在或您没有足够的权限执行操作”——即使我以管理权限运行。在查看队列时,我发现它们没有被创建,如果我手动创建队列,它就会起作用。

当我在另一台机器上运行时,为什么不会自动创建队列?

更新

如果我运行NServiceBus.Host.exe /install它会创建队列,并将其安装为 Windows 服务。但我想做的是定期运行它。如果我只是运行 exe,它是否被视为自托管?

0 投票
1 回答
119 浏览

c# - 如何在 V5 中配置 NServicebus V4 ConfigurarionComplete 事件处理程序?

在 NServicebus 的 V4 中,曾经有一个 ConfigurationComplete 事件,我们可以在 INeedInitialization 实现中使用它来连接事件处理程序,例如

在 V5 中,似乎 ConfigurationComplete 已被删除。我已经看过http://docs.particular.net/nservicebus/upgradeguides/4to5diffhttp://docs.particular.net/nservicebus/upgradeguides/4to5#if-using-manual-references

我没有看到任何明确的记录路径。

有没有人遇到过这个?有什么推荐的处理方法吗?

提前致谢!

0 投票
1 回答
252 浏览

nservicebus - 如何以编程方式检查是否超出 msmq 配额

我想以编程方式检查是否超出了 MSMQ 配额。这样,我可以提供 ServicePulse 自定义检查。我注意到如果事务性死信队列充满了消息,则 MSMQ 配额大多超过。因此,不是检查 MSMQ 配额,另一种方法是检查死信队列是否包含任何消息。

你对这个话题有什么建议吗?

提前致谢