Эту проблему трудно выявить без фактического доступа к инфраструктуре.
Мне кажется, учитывая, что ваш Java
клиент успешно публикует посредник RabbitMQ
, а C#
клиент неНе реагируйте на сообщения, что в вашей сериализации сообщений может что-то отсутствовать.
Несколько вещей, которые вы должны проверить:
Взгляните на встроенную интеграцию с образцом RabbitMQ
В документации NServiceBus
есть раздел о том, как использовать встроенную интеграцию RabbitMQ .Вы можете скачать образец и посмотреть, как отдельные парни заставили его работать.
NServiceBus использует определенные атрибуты заголовка в сообщениях.
Один из них - этоNServiceBus.EnclosedMessageTypes
, который позволяет NServiceBus идентифицировать тип сообщения, более конкретно, сопоставить его с соответствующим классом C#
, реализующим IMessage
.Также потребуется заголовок NServiceBus.MessageIntent
.
Я предлагаю вам ознакомиться с документацией Заголовки сообщений NServiceBus , в вашем случае специально с разделом Заголовки ответа .Убедитесь, что вы добавили NServiceBus
требуемые заголовки из вашего Java
клиента, как описано в RabbitMQ API-Guide .Я не могу сказать, какие из этих заголовков являются обязательными для работы NServiceBus, поэтому пробная версия и ошибка - ваш друг.
Отслеживание сообщений, опубликованных NServiceBus в RabbitMQ
Сравните сообщения, опубликованные с помощью NServiceBus
, с сообщениями, опубликованными с помощью клиента Java
.Вот ссылка для одного возможного решения о том, как отслеживать сообщения RabbitMQ и их полезную нагрузку.Таким образом, вы можете определить различия между двумя типами сообщений и их содержимым.
Использование NServiceBus ServiceControl
Одним из преимуществ NServiceBus
является наличие инструментовэто приносит с этим.Установите экземпляр ServiceControl и используйте сообщения проверки от ServiceInsights
до и с ошибками для конечных точек.Вы можете найти прослушанные сообщения Java
.Как правило, этот инструмент отлично подходит для производственных сред, и я могу только рекомендовать его.
Если ничего не работает, другим вариантом для вас будет создание тонкого REST API
в C#
, так какшлюз издателя, который будет принимать запросы POST
и публиковать контент, используя NServiceBus
для вашего RabbitMQ
.Вы сможете ссылаться на ваш проект, содержащий ваши сообщения, и использовать их в качестве моделей для API.
Возможный пример:
POST https://busgateway.corporate.com/api/{endpoint}/send/{messagetype}
body:
{
"property": "value",
"publisher": "java client"
}
Таким образом ваш клиент Java
будет отправлять сообщенияиспользуя http запросы.