问题标签 [nservicebus6]

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 投票
2 回答
117 浏览

nservicebus - 如何同时使用 AzureStoragePersistence 和发件箱?

因此,我将我的 NSB 设置从 SQL 服务器移到了 azure 服务总线上,并认为我也可以使用 azure 存储来实现持久性。我不清楚如何设置它,因为我也在使用发件箱,我不能使用天蓝色存储。我将 web.config 用于连接字符串,它只允许我设置一次 NServiceBus/Persistence,所以......我有点迷路了

0 投票
0 回答
332 浏览

nservicebus - 有没有办法让域事件上下文不知道 NServiceBus 6 和 IBus 的删除?

我正在努力解决我们目前在域事件处理程序中使用 IBus 接口 (NServiceBus v5) 将命令发送到后端服务进行处理的情况。使用 IBus,无论是什么触发了事件,无论是在接收 Web API 请求时还是作为 NServiceBus 处理程序(公共域模型)的一部分,都可以发送这些命令。但是,在 NServiceBus v6 中,随着转向特定于上下文的接口、IEndpointInstance 或 IMessageHandlerContext,我的域事件处理程序现在似乎需要变得上下文感知。而且,看起来 IMessageHandlerContext 只能通过方法注入获得,所以我可能不得不在整个调用堆栈中都使用这个参数?

是否有一些我没有看到的方法可以让我的域事件处理程序上下文不知道?或者我是否遵循了一些通过这种代码气味暴露出来的不良做法?

编辑

这是将场景简化为最相关部分的尝试。领域模型中有一个订单,其状态可能会发生变化。当订单状态发生变化时,我们会通过发布者触发 StatusChanged 域事件。此特定域事件的订阅者写出状态更改的记录,并发送 NServiceBus 命令以传达此状态 - 此特定命令的处理程序将遵循一些关于是否发送电子邮件、SMS 消息等的进一步逻辑.,我认为不相关的细节。

订购领域对象

领域事件发布者

状态更改域事件处理程序

事情是,到目前为止,上面的示例代码都不需要知道状态是由于通过 Web API 请求进入的请求还是由于在 NServiceBus 消息的上下文中更改状态而改变的处理程序(在 Windows 服务中)- IBus 接口不是特定于上下文的。但是随着 NServiceBus v6 中 IEndpointInstance 和 IMessageHandlerContext 的区别,我不觉得我有同样的灵活性。

如果我理解正确,我可以在我的容器中注册 IEndpointInstance 并注入到 EventSubscriber,所以我会在 Web API 调用的情况下被覆盖,但我还需要添加一个 IMessageHandlerContext 作为参数如果状态恰好在消息处理程序的上下文中更改,则可以选择通过调用堆栈从 ChangeStatus 传递到发布者,最后传递到域事件订阅者。在整个调用堆栈中添加这个参数真的感觉不对。

0 投票
1 回答
506 浏览

nservicebus - 如何在 NServiceBus 6 中的“Handle”方法之后注册要执行的行为?

我有Endpoint一个Handle方法。我想在之前和之后立即做一些事情Handle。我能够通过 imolementing 使之前的步骤正常工作LogCommandEntryBehavior : Behavior<IIncomingLogicalMessageContext>。紧随其后需要实施什么Handle

0 投票
2 回答
328 浏览

nservicebus - 如何推迟 NServiceBus 6.0 中的事件?

我们使用 NserviceBus 作为我们的消息传递基础设施,使用 RabbitMQ 作为传输。我正在尝试从 5.* 版本升级到 NServiceBus 6.0。在 5.0 中,我们可以使用“Bus.Defer()”来延迟事件。但似乎在 6.0 中我们只能推迟消息但不能推迟事件?

如果我使用下面的代码并将消息作为“事件”,我会收到一条错误消息,指出应该发布事件。

但是context.Publish(message, new PublishOptions())方法采用“PublishOptions”,它没有延迟选项。

我在这里错过了什么吗?感谢有人可以提供帮助。

0 投票
0 回答
90 浏览

sql-server - NServiceBus 过期消息清除失败,无法删除消息,记录 WARN

我们有一些使用 SQL Server Transport (3.1.2) 的 NServiceBus 处理程序 (6.4.0) 运行良好,但它们的过期消息清除周期始终无法删除任何行,并且始终记录有关此问题的 WARN。与消息相反,我没有看到端点表中积累了任何消息。下图是作为控制台应用程序运行的处理程序,记录了 WARN。

作为控制台应用程序运行时发出警告

环境奇点:我们的传输(和用户数据)数据库处于兼容模式 80(即 SQL Server 2000 模式),即使服务器实例是 2008 R2。我们在传输表上遇到了一些问题,因为服务器抱怨说 ARITHABORT 必须打开才能支持这些表上使用的索引,但我们的公司软件要求它默认关闭。为了绕过全局更改它,在 EndpointConfig 中,我们使用“UseCustomConnectionFactory()”来提供一个创建新 SqlConnections 的函数,并在创建后在连接上运行 SET ARITHABORT ON,然后将其返回以供应用程序使用。这似乎解决了这个问题——但现在我们得到了清除失败和警告。实际的错误消息提到“超时”和“服务器没有响应”——但数据库是持续可用的,可查询,并在发生这种情况时使用。此外,当音量非常低时会发生这种情况 - 低至每分钟 2 或 3 条消息。

非常感谢您对可能出现的问题、我们如何进一步调试或如何解决问题的任何想法。

0 投票
1 回答
89 浏览

nservicebus - 将 NServiceBus 5 升级到 6

将 Nservicebus 从版本 5 升级到 6 后出现错误。这发生在我的 MessageEndpoint 中调用自定义方法之前。我的 MessageEndpoint 继承自 IConfigureThisEndpoint, AsA_Server

API 限制:程序集“file:///PostSharp.dll”已从不同位置加载。它不能从同一 appdomain 中的新位置加载。

0 投票
1 回答
139 浏览

rabbitmq - NserviceBus 6 使用 MsmqTransport 不工作

我们正在使用 NSB 6.0。我已经使用以下代码在我的配置上设置了 RabbitMQTransport 和 MsmqTransport

我对 RabbitMQTransport 没有任何问题,但是一旦我切换到 MsmqTransport,就会出现以下错误。

“字典中不存在给定的键 (RabbitMQ.RoutingTopologySupportsDelayedDelivery)。”

0 投票
1 回答
290 浏览

rabbitmq - NServiceBus 6.2 使用 RabbitMQ 丢失消息

我使用的是 NSB 版本 6.2 和 RabbitMQ 版本 4。我使用的是 RabbitMQTransport。我的 RabbitMQ 服务器位于 Azure 的虚拟机中。当我发送消息时,有时我会丢失消息而没有任何错误。

这是我的 NService 总线配置。

0 投票
2 回答
192 浏览

nservicebus - Nservicebus 如何处理结构图上的嵌套容器?

TL;博士; 某些属性在应该注入服务时没有被注入。Nservicebus 如何处理结构图上的嵌套容器?

嘿伙计们,新来的。我目前正在将我们的项目升级到 NSB6。我有几个关于使用 Structuremap 进行依赖注入的问题。

我们有一些使用 ISendOnlyBus 的服务,我们从处理程序内部调用它们。出于测试目的(我只想让处理程序工作)我将它们更改为 IMessageHandlerContext,并在处理程序的开头将上下文注入容器。它按预期工作,IMessageHandlerContext 在这些服务上得到解决,我可以使用它。

现在的问题是我们在发送 nservicebus 消息的实体上有一个 Nhibernate 自定义 IPostUpdateEventListener。在版本 5 上,它有一个用于发送的 ISendOnlyEndpoint,与其他服务相同,但这次上下文没有被 Structuremap 解析。我想知道 nservicebus 如何以及是否管理消息处理程序中的嵌套容器。我似乎找不到任何文档。

0 投票
1 回答
275 浏览

nservicebus - 如何查看 nserviceBus 消息的目的地?

在 nServiceBus 的第 5 版中,我有一个跟踪飞行中消息的行为。

在行为中,我能够访问 DeliveryOptions(SendOptions) 并查看目标队列,在 NSB 6 中,随着行为的更改,我似乎无法再访问消息的目标。

有谁知道从行为访问传出消息的目的地?

v5 中的先前代码:

v6 中的代码: