• java实现MQ消息收发两种方式


    定义:

    消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。简单理解:蓝牙配对

    jar包依赖:

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

    方式一:

    (发)

    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 + "'");
            }
        }
    }


    方式二:

    (发)

    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    
    public class Send2 {
    
            private  static  final String EXCHANGE_NAME = "qq" ;
    
            public  static  void  main (String [] argv) throws java.io.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.exchangeDeclare(EXCHANGE_NAME,"fanout",true);
    
                String message = "hello world";
    
                channel.basicPublish(EXCHANGE_NAME,"",null,message.getBytes());
                System.out.println("[x] Sent'" + message + "'");
    
                channel.close();
                connection.close();
            }

    (收)

    import java.io.IOException;import com.alibaba.fastjson.JSONObject;
    import com.rabbitmq.client.AMQP;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory;
    import com.rabbitmq.client.Consumer;
    import com.rabbitmq.client.DefaultConsumer;
    import com.rabbitmq.client.Envelope;
    
    public  class  Reqv2  {
    private static final String EXCHANGE_NAME = "qq" ;public static void main (String [] argv) throws Exception { 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.exchangeDeclare(EXCHANGE_NAME,"fanout",true); String queueName = channel.queueDeclare().getQueue(); channel.queueBind(queueName,EXCHANGE_NAME,""); System.out.println("[*]等待消息。退出按CTRL + C"); Consumer consumer = new DefaultConsumer(channel){ @Override public void handleDelivery (String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException { String message = new String(body,"UTF-8"); System.out.println("[x] Received'" + message + "'"); } }; channel.basicConsume(queueName,true,consumer); } }


    参考网址:

    http://www.rabbitmq.com/tutorials/tutorial-one-java.html

  • 相关阅读:
    解决WordPress不能发邮件,WordPress 无法发送邮件
    WordPress 显示 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2097160 bytes)解决办法
    怎么优雅的取消重复请求ajax
    手拉手搭建一个脚手架
    数据库隔离级别RC与RR区别——MVCC、ReadView
    整理一下下一步的计划
    减肥
    EBS: Shift + F6: 当复制上行记录
    Oracle 表值函数之多表关联使用
    EBS: 序号授权 GRANT
  • 原文地址:https://www.cnblogs.com/xu-lei/p/MQ.html
Copyright © 2020-2023  润新知