How can I check whether a RabbitMQ message queue exists or not?

Don’t bother checking. queue.declare is an idempotent operation. So, if you run it once, twice, N times, the result will still be the same. If you want to ensure that the queue exists, just declare it before using it. Make sure you declare it with the same durability, exclusivity, auto-deleted-ness every time, otherwise you’ll get … Read more

How does consumer rebalancing work in Kafka?

Depends on what you mean by “blocked”. If you mean “are existing connections closed when rebalance is triggered” then the answer is yes. The current Kafka’s rebalancing algorithm is unfortunately imperfect. Here is what is happening during consumer rebalance. Assume we have a topic with 10 partitions (0-9), and one consumer (lets name it consumer1) … Read more

What is the difference between a channel adapter and a messaging gateway pattern?

That’s a great question since they are similar in that they provide an application access to a messaging system. It is how they acheive it I think that differentiates them. The Channel Adapter pattern deals how to get data from an existing system without modifying that system. Typically the Channel Adapdter is implemented out-of-process. Examples … Read more

Low-latency, large-scale message queuing

@MSalters Re ‘message queue’: RabbitMQ’s default operation is exactly what you describe: transient pubsub. But with TCP instead of UDP. If you want guaranteed eventual delivery and other persistence and recovery features, then you CAN have that too – it’s an option. That’s the whole point of RabbitMQ and AMQP — you can have lots … Read more