0
votes

I currently have an on-premise setup using NServiceBus with MSMQ. There is one ServiceControl instance, which receives all error and audit messages.

Now I'm doing a new project, which will use Azure for hosting, i.e. I will host various NServiceBus endpoints in Azure (probably using Kubernetes or Service Fabric) using RabbitMQ as tansport, and I want the Azure endpoints to communicate with the on-premise endpoints and vice versa.

I stumbled upon the community-driven project NServiceBus.Bridge, which seems to be useful for this situation. But I have some uncertainties.

  • Is this a good approach given my described requirements?

  • Where would be the best location for hosting the Bridge endpoint, on-premise or Azure? Or do I need a Bridge endpoint in each location, given that I want to be able to send and publish messages in each direction?

  • How do I handle error, audit and control (e.g. Heartbeat) messages, since they are set up using specific NServiceBus configuration (SendFailedMessagesTo, AuditProcessedMessagesTo and HeartbeatPlugin) and therefore don't seem to be able to be sent over the bridge? I think it would be optimal if the messages could end up at my on-premise ServiceControl instance, so that I have all error/audit data in one place and thereby be able to see the full message flows in ServiceInsight.

1

1 Answers

1
votes

What you're looking at is a hybrid solution. Using NServiceBus.Bridge is a valid approach to connect NServiceBus endpoints/Particular Platform when they are not on the same transport. There's a sample project that is demonstrating hybrid solution for RabbitMQ and MSMQ.

Where would be the best location for hosting the Bridge endpoint, on-premise or Azure?

Dealing with MSMQ, you'd want your bridge process to be as close as possible to MSMQ endpoints.

How do I handle error, audit and control (e.g. Heartbeat) messages,

As for the error, audit, and heartbeat messages, they should be handled by ServiceControl Transpor Adapter. There's a sample for RabbitMQ as well here.