问题标签 [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.
nhibernate - NServiceBus 4.6.5 NHibernate Saga Persister 不持久化 Saga 数据
我将 NServiceBus 与 NHibernate 一起使用,并在我自己的进程中托管总线。我正在使用的配置是:
和:
此配置在我的 SQL Server 数据库中为我的 saga 创建表,其中包含我在我的 saga 中指定的字段,这很棒。
但是,当我的 Saga 运行并完成时,NServiceBus 似乎没有将记录插入到我的 saga 表中。
表格在那里,只是没有数据。
这应该预期吗?saga 成功完成后,NServiceBus 是否会删除持久性中的 saga 条目?
testing - 使用内存中的 NServiceBus 进行测试
我正在尝试在我的解决方案中创建一个高级测试,并且我想“捕获”发送到总线的消息。
这就是我所做的:
- nUnit [SetUp] 在 IISExpress 中启动 WebAPI 项目
- SetUp 还会创建总线
- 向 API 发送 HTTP 请求
- 验证我想验证的任何内容
整个测试的 WebAPI 部分运行良好。公共汽车的创建和启动似乎也很棒。它甚至可以找到我的假消息处理程序。问题是处理程序永远不会收到来自队列的命令,它们只是永远留在 RabbitMQ 队列中。
以下是总线的配置方式:
在 NServiceBus 启动的日志中,我看到我的假处理程序与命令相关联:
因此,当消息到达正确的 RabbitMQ 队列时,我假设一切都在处理程序点正常工作之前。
我已经尝试在我的 [TearDown] 中放置等待,以便总线寿命更长一些 - 希望给处理程序时间来接收消息。我还尝试将交互的消费者部分的内存总线分离到一个新线程中,但没有成功。
有没有其他人试过这个?
这只是第一步,我想做的是创建一个记录发送给它的消息的假总线。RabbitMQ 的需要只是为了让自己继续前进(我的解决方案的范围是前面的 WebAPI 和后面的总线)。
干杯
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 方法方面遗漏了一些东西,该方法在比循环轮询设计更实时的设计中生成数据驱动事件。
nservicebus - NServiceBus 中的 Sql Server Transport 有什么限制?
我试图让VideoStore.NHibernate
NServiceBus 示例(来自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 是否有任何缺点?
.net - 在 NServiceBus 中,我可以同时使用 Pub/Sub 消息传递和全双工吗?
我们想使用 NSB (NServiceBus) 来开发我们的应用程序。我们有一堆(约 6 个)服务将与 NSB 挂钩,并且发布/订阅模式非常有意义。但是,还有一个配置服务,我们需要一个简单的请求/回复(全双工)模式来从本地数据库或中央远程数据库服务器获取配置数据(设置、权限等)。
因此客户端会请求配置数据并立即返回结果,这在将 NSB 与 pub/sub 设置一起使用时是非法的(根据手册)。
有没有办法使用 NSB 来做到这一点,而不会失去 SLR 和容错、错误队列等酷炫的功能?还是我只需要完全绕过 NSB 并创建一个简单的 WCF 服务?
谢谢你。
.net - 一个 EndPoint 一个 NServiceBus.Host,推荐的方法是什么
鉴于在线文档,我正在尝试了解 NServiceBus。我无法理解的是基础设施的整体推荐设置。我们的应用程序应该能够同时运行单台机器和跨多个(逻辑上不同的)站点(n 个商店-1 个总部)。至于 NServiceBus(我通过 NuGet 使用 v5),我并不完全理解主机和端点的概念。
假设我们有 15 项服务(订单服务、商品服务等)。
我是否需要 15 个客户端(15 个类库项目,代码通过总线发送消息)和 15 个服务器(一个或多个接收消息处理程序类,处理特定于服务的消息/命令)?所以总共30个。
每个服务都应该使用自己独立的 MSMQ 吗?
对于这 15 个“服务器”项目,在生产环境中我需要安装 NServiceBus.Host 15 次(因此创建了 15 个 Windows 服务实例)。在 VS 中调试时,NSerivceBus.Host.exe 将在您开始调试时启动。
因此,您有效地为每个主机/服务器项目“托管”一个端点。或者我可以在其中有一个主机和 15 个端点吗?
您可以说我是这个 ESB 模式的新手,所以感谢您的意见。
.net - 使用 SimpleInjector 和 NServiceBus 注入 IBus Bus 属性
我正在尝试使用它自己的依赖注入容器和SimpleInjector 来熟悉NServiceBus 5,这是我们选择的容器。
有一种方法可以告诉 NServiceBus 注入
IBus 总线 {get;set;}
属性到所有 ASP.NET MVC ApiControllers(或其他地方)使用自定义NServiceBusControllerActivator
和NServiceBusDependencyResolverAdapter
.
但是,我们想使用 SimpleInjector,并且没有 MVC 应用程序,并且我们不想将 Bus 直接注入控制器。控制器应该是轻量级的,所以逻辑在“服务”内部,然后调用Bus.Send(message)
.
您将如何Bus
使用 SimpleInjector 完成注入属性?
我知道人们曾尝试使用 NServiceBus 配置 SIMpleInjector,但他们就是不能一起工作。
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,它是否被视为自托管?
c# - 如何在 V5 中配置 NServicebus V4 ConfigurarionComplete 事件处理程序?
在 NServicebus 的 V4 中,曾经有一个 ConfigurationComplete 事件,我们可以在 INeedInitialization 实现中使用它来连接事件处理程序,例如
在 V5 中,似乎 ConfigurationComplete 已被删除。我已经看过http://docs.particular.net/nservicebus/upgradeguides/4to5diff 和http://docs.particular.net/nservicebus/upgradeguides/4to5#if-using-manual-references
我没有看到任何明确的记录路径。
有没有人遇到过这个?有什么推荐的处理方法吗?
提前致谢!
nservicebus - 如何以编程方式检查是否超出 msmq 配额
我想以编程方式检查是否超出了 MSMQ 配额。这样,我可以提供 ServicePulse 自定义检查。我注意到如果事务性死信队列充满了消息,则 MSMQ 配额大多超过。因此,不是检查 MSMQ 配额,另一种方法是检查死信队列是否包含任何消息。
你对这个话题有什么建议吗?
提前致谢