I can see that it's possible to send messages from RabbitMQ to Azure Service Bus - see here.
Wondering if it's possible to do the reverse i.e. send messages from Azure Service Bus to RabbitMQ? Essentially trying to integrate with third party...
Related
Azure EventHubs (on tier standard) allows you to use the Kafka SDK. Does Azure Service Bus has a similar feature for RabbitMQ given that both work with AMQP?
I want to use Mass Transit with RabbitMQ and Kafka for message broker.
and in deployment phase can decide which one be used for transporting messages.
I know what's ConsumeContext,ISendEndpointProvider, or IPublishEndpoint. And according of the link this Interfaces shared between RabbitMQ and Kafka for publishing messages and consuming that.
I configured both RabbitMQ and Kafka in startup of my .Net Core App and by appSetting in deployment phase can decide which one must be register.
this approach is correct for having and configure both Kafka and RabbitMq in my app?
Using MassTransit, Kafka is a Rider which is configured along with a bus – and the bus still requires a supported transport. If you have RabbitMQ, that would be your bus transport, and the Kafka Rider would exist alongside the bus using the bus for publishing and sending messages.
With Kafka, messages can only be consumed or produced – they cannot be published, nor can they be sent. The ITopicProducer<T> interface is used to produce messages to Kafka topics.
Calling Publish or Send on the ConsumeContext will publish or send those messages to the rider's bus (which may be RabbitMQ, or any supported transport included the InMemory transport). Producing messages to Kafka topics must be done using the ITopicProducer<T> (which may be injected as a dependency to the consumer).
You can't "switch out" RabbitMQ with Kafka as the two services are very different.
I'm looking into integration of WSO2 MI and RabbitMQ, the goal is to create a system with the following steps:
1. MI receive request from a client and send the message to RabbitMQ
2. RabbitMQ put message in the queue and it's taken by the subscriber client for processing.
3. Message with response from the processing service placed into response RabbitMQ queue.
4. MI receive message from that response queue and send reply to the client.
There is following documentation in wso2 official manuals:
https://ei.docs.wso2.com/en/latest/micro-integrator/setup/brokers/configure-with-rabbitMQ/
https://ei.docs.wso2.com/en/latest/micro-integrator/use-cases/examples/jms_examples/rabbitmq-examples/
I assume that's what I need, but it's not clear how exactly these should be executed.
Let's say I've configured a connection to RabbitMQ in MI.
How exactly do I use these synapse configurations mentioned in the docs to be able to send messages to rabbit based on the client request or reply to a client based on messages from rabbit?
There are multiple patterns for synchronous/asynchronous messaging with RabbitMQ in WSO2 Enterprise Integrator. Please have a look at these examples.
Point to Point
Publisher/Subscriber
Guaranteed Delivery
Request/Response - Dual Channel
Furthermore, you can find a tutorial for the asynchronous messaging from here!
We are working towards an architecture like one below but we will have micro services on cloud and some on premises which will talk to each other using queue(s) and bus(es),
Now I am confused with where we should host MassTransit and RabbitMq, also should it be a ASP.NET Core project on its own ? if yes what I will be doing in it ? starting a bus ? creating queues ? I am not able to move forward with this
The simple MassTransit examples are just that, the absolute simplest examples of interacting with queues.
RabbitMQ is your message broker. It is hosted separately.
MassTransit is a development framework that makes it much easier to interact with RabbitMQ (or Azure Service Bus) by abstracting away the implementation-specific "plumbing."
You write any number of .NET services that either publish messages to a queue, or subscribe to queues.
We recently worked on something similar, the way we did it is:
RabbitMQ was hosted separately, and buses/queues creation and management were done from the services that use messaging.
For each service that receives messages you use Maastransit to create a queue because service will be receiving messages using this queue.
You will be using publish/subscribe way of messaging so as mentioned above, inside each service, create a queue with logical name and connect to RabbitMQ server address.
Services that represent senders will publish messages of a custom type you create, and services that represent receivers will subscribe to this type of messages by having a consumer for this type registered inside the bus created.
Hope it helps.
The idea is:
I have N WCF services which connected and subscribed to the same Redis message channel. These services use this channel to exchange messages to sync some caches and other data.
How each service can ignore its own messages? I.e. how to publish to all but me?
It looks like Redis PUB/SUB doesn't support such filtration. So, the solution is to use set of individual channels for every publisher and common channel for subscription synchronization between them. Here is an golang example of no-echo chat application.