I want develop an application where in the python code sends the message using rabbitmq and the consumer is Spring boot rabbitmq code.
sender.py
#!/usr/bin/env python
import pika
import sys
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='topic_logs',
exchange_type='topic')
routing_key = sys.argv[1] if len(sys.argv) > 2 else 'anonymous.info'
message = ' '.join(sys.argv[2:]) or 'Hello World!'
channel.basic_publish(exchange='topic_logs',
routing_key=routing_key,
body=message)
print(" [x] Sent %r:%r" % (routing_key, message))
connection.close()
How do I configure a rabbitmq receiver using spring boot? What are the necessary configurations required at the receiver side? Please help.
@SpringBootApplication
public class So49512910Application {
public static void main(String[] args) {
SpringApplication.run(So49512910Application.class, args);
}
@Bean
public Queue queue() {
return new Queue("someQueue");
}
@Bean
public TopicExchange exchange() {
return new TopicExchange("topic_logs");
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(exchange()).with("whatever.topic.pattern.you.want.to.match");
}
@RabbitListener(queues = "someQueue")
public void listener(String in) {
System.out.println(in);
}
}
Or, if the exchange already exists...
@SpringBootApplication
public class So49512910Application {
public static void main(String[] args) {
SpringApplication.run(So49512910Application.class, args);
}
@Bean
public Queue queue() {
return new Queue("someQueue");
}
@Bean
public Binding binding() {
return new Binding("someQueue", DestinationType.QUEUE, "topic_logs", "rk.pattern", null);
}
@RabbitListener(queues = "someQueue")
public void listener(String in) {
System.out.println(in);
}
}