首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus与Java集成

NServiceBus与Java集成
EN

Stack Overflow用户
提问于 2019-05-08 06:08:07
回答 1查看 926关注 0票数 2

我们有几个微服务,大多数是用C#编写的,但是有一个是用Java编写的。我们使用NServiceBus和RabbitMQ在.NET服务之间进行通信。有一种情况是,其中一个C#组件需要使用RabbitMQ请求/应答与Java对话。

当使用NServiceBus时,应答队列被标记为AnyQueueName-1,其中-1表示这是一个应答队列。

通过调试Java服务,我可以看到我能够将消息从C#服务发送到Java。一旦Java组件处理完消息,它就应该发送回一条消息。所有的问题都从这里开始。

  1. 我可以看到它应该将消息发送到正确的队列。该名称已在RabbitMQ管理工具中验证。但这队伍里没有什么活动。
  2. Java端不会抛出任何异常,在我看来,它似乎能够发送消息,但是它会去哪里呢?我并不期望NServiceBus和Java能够完美地协同工作,但是至少我应该在我期望的队列中看到一些活动。

相关的Java代码如下所示:

代码语言:javascript
复制
Message responseMessage = rabbitTemplate.getMessageConverter().toMessage(response, responseProperties);
String replyTo = requestProperties.getReplyTo();
rabbitTemplate.convertAndSend(replyTo, responseMessage, cd);

其中变量replyTo是我期望将消息推送到的队列的名称。

有人能把我推到正确的方向吗?下一步我应该在哪里调试?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 06:56:09

如果不完全访问基础设施,就很难确定这个问题。

在我看来,考虑到您的Java客户机成功地向RabbitMQ代理发布,但是C#客户端对消息没有反应,您的消息序列化可能缺少了什么。

有几件事你应该检查一下:

看一下与RabbitMQ示例的本机集成

NServiceBus文档中有一个关于如何使用本地RabbitMQ集成的部分。你可以下载这个示例,看看特定的人是如何让它工作的。

NServiceBus在消息中使用特定的标头属性.

其中之一是NServiceBus.EnclosedMessageTypes,它分配NServiceBus以标识消息类型,更具体地将其映射到实现IMessage的相应C#类。此外,还需要NServiceBus.MessageIntent头。

我建议您查看NServiceBus消息头文档,特别是应答标头部分。确保您从您的NServiceBus客户机中添加了Java所需的头部,如RabbitMQ API-指南中所解释的。我不知道这些标头中哪些是NServiceBus必须运行的,所以尝试和错误是您的朋友。

跟踪由NServiceBus在RabbitMQ中发布的消息

将使用NServiceBus发布的消息与使用Java客户端发布的消息进行比较。下面是一个关于如何跟踪链接消息及其有效负载的可能解决方案的RabbitMQ。通过这种方式,您可以识别这两种消息类型及其内容之间的差异。

使用NServiceBus ServiceControl

NServiceBus的优点之一是它所带来的工具。设置一个ServiceControl实例,并将ServiceInsights用于每个端点的检查讯息错误。您可能会发现您的Java消息被监听了。一般来说,这个工具对于生产环境是很好的,我只能推荐它。

如果不让它工作,另一种选择是在C#中创建一个瘦的C#,作为发布网关,它将接收POST请求,并使用NServiceBus将内容发布到RabbitMQ。您可以引用包含消息的项目,并将它们用作API的模型。

一个可能的例子是:

代码语言:javascript
复制
POST https://busgateway.corporate.com/api/{endpoint}/send/{messagetype}

body:
{
   "property": "value",
   "publisher": "java client"
}

这样,您的Java客户端将使用http请求发送消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56034493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档