java实现rabbitMQ消息收发方式

定义:消息队列(MQ)是一种应用程序对应用程序的通信方法是AMQP协议。

jar包依赖:

<!-- 加入mq消息依赖包 -->
  <dependency>
         <groupId>com.rabbitmq</groupId>
         <artifactId>amqp-client</artifactId>
         <version>3.0.4</version>
  </dependency>

发送消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
public class Send {
    private final static String QUEUE_NAME = "qq"
 
    public static void main(String[] args) throws IOException { 
        ConnectionFactory factory = new ConnectionFactory(); 
        factory.setHost("hostname");
        factory.setUsername("username");
        factory.setPassword("password");
        factory.setPort(5672);
        Connection connection = factory.newConnection(); 
        Channel channel = connection.createChannel(); 
 
        channel.queueDeclare(QUEUE_NAME, false, false, false, null); 
        String message = "Hello World!"
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 
        System.out.println(" [x] Sent '" + message + "'"); 
 
        channel.close(); 
        connection.close(); 
    
}

  

接收消息:

复制代码
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

public class Reqv {
    private final static String QUEUE_NAME = "qq";

    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();

        factory.setUsername("username");
        factory.setPassword("password");
        factory.setHost("hostname");
        factory.setVirtualHost("/"); 
        factory.setPort(5672);
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
       
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
        QueueingConsumer consumer = new QueueingConsumer(channel);
        channel.basicConsume(QUEUE_NAME, true, consumer);
        while(true){
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received '" + message + "'");
        }
    }
}
复制代码

 

posted @   愿无违  阅读(4218)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示