rabbitmq学习以及spring项目spring-amqp配置

这篇博客介绍了rabbitmq的基础知识,包括安装、登录和五种消息通讯模式:简单模式、work模式、订阅模式、路由模式和通配符模式。接着讲解了spring-amqp项目,如何在Spring中配置并使用rabbitmq,包括导入依赖和配置文件示例。
摘要由CSDN通过智能技术生成

rabbitmq学习

rabbimq是一种由erlang语言开发的,程序和程序之间通讯工具,因此,在使用rabbitmq时候需要安装erlang的环境,这里就略了。

装好rabbitmq后,我们登录127.0.0.1:15672 ,就可以进入页面视图,进行账户相关的设置,这里也略过.
rabbitmq的登录页面

我们主要学习rabbitmq的消息通讯学习,我们使用pom工程,引入rabbitmq的依赖,坐标是:

   <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>3.4.1</version>
    </dependency> 

rabbitmq消息通讯主要有5种模式:简单模式,work模式,订阅模式,路由模式,通配符模式.

  1. 简单模式
/** 发送者 **/ 
public class Send {
   

    private static String QUEUE_NAME= "test_queue";
    public static void main(String[] args) throws IOException {
        /*
         * 步骤: 
         * 1.建立连接
         * 2.创建通道
         * 3.声明队列
         * 4.设定消息内容,连接通道
         * 5.关闭通道和连接
         */
        Connection connection = ConnectionUtil.getConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "hello rabbitmq";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

        channel.close();
        connection.close();

    }

}


/**连接工具类,通过工具类连接开头设置的host/账号/密码**/
public class ConnectionUtil {
   

    public static Connection getConnection() throws IOException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setVirtualHost("/huawei");
        factory.setUsername("huawei");
        factory.setPassword("huawei");

        Connection connection = factory.newConnection();
        return connection;
    }
}
/**接收者**/
public class Recev {
   
   private final static String QUEUE_NAME = "test_queue";   
    public static void main(String[] args) throws Exception {
        /*
         * 步骤: 
         * 1.建立连接
         * 2.创建通道
         * 3.声明队列
         * 4.设定消息者,监听队列
         * 5.获取消息
         */
        Connection connection = ConnectionUtil.getConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        QueueingConsumer consumer = new QueueingConsumer(channel);
        channel.basicConsume(QUEUE_NAME, true,consumer);//监听 ,true表示消息自动确认

        while(true){
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println("receve:"+message);
        }

    }
}

代码写好后,先运行接收者,让其处理待接收状态,然后运行发送者,这样接收者就能接收到消息,并打印出消息内容,在页面的queue木块也能查看到队列名以及队列消 息运行历史.

  1. work模式
    work模式和简单模式的区别就是,简单模式是一个发送者一个接收者,但是work模式可以是一个发送者,多个接收者,缺点就是多个接收者接收到的消息都是消息的一部分,并不是全部 .
/**  消息发送者 **/
public class Send {
   

    private static String QUEUE_NAME = "test_queue_work";
    public static void main(String[] args) throws Exception {
        Connection connection = ConnectionUtil.getConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        for (int i = 0; i < 100; i++) {
            String message = "" + i ;
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            Thread.sleep(i*10);
        }

        channel.close();
        connection.close();
    }
}
/** 消息接收者1 **/
public class Recev {
   
    private static String QUEUE_NAME = "test_queue_work";
    public
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值