java调用rabbitmq

Posted 雪儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java调用rabbitmq相关的知识,希望对你有一定的参考价值。

1 : 需要的jar

下载地址:http://repo1.maven.org/maven2/com/rabbitmq/amqp-client/3.0.4/

maven配置:

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

注意:夹包的版本不同,有的类找不到,

  列如:import com.rabbitmq.client.QueueingConsumer;-----在5.0.0版本中就没有,在3.0.4版本中有,其他版本需要自己测试

2:创建一个java工程,直接引入下面代码测试

=========================测试类开始===========================

package rabbitmq;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import org.junit.Test;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;  
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;

public class TestMq {
    
    public final static String QUEUE_NAME="rabbitMQ_test";
    
    /**
     * 建立连接,创建消息列队,并且向消息列队中发送一条消息
     */
    @Test
    public void linkSend(){
        
            try {
                //创建连接工厂
                ConnectionFactory factory = new ConnectionFactory();

                //设置RabbitMQ相关信息
                factory.setHost("192.168.146.134");
                factory.setUsername("admin");
                factory.setPassword("123");
                factory.setPort(5672);

                //创建一个新的连接
                Connection connection = factory.newConnection();
                //创建一个通道
                Channel channel = connection.createChannel();
                // 声明一个队列
                channel.queueDeclare(QUEUE_NAME, false, false, false, null);
                //发送消息到队列中
                String message = "Hello RabbitMQ";
                channel.basicPublish("",QUEUE_NAME, null, message.getBytes("UTF-8"));
                System.out.println("Producer Send +‘" + message + "‘");

                //关闭通道和连接
                channel.close();
                connection.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
    
    /**
     * 建立连接,创建消息列队,并且接收消息列队中的一条消息
     */
    @Test
    public void testReceive(){
        
            
            try {
                //创建连接工厂
                ConnectionFactory factory = new ConnectionFactory();

                //设置RabbitMQ相关信息
                factory.setHost("192.168.146.134");
                factory.setUsername("admin");
                factory.setPassword("123");
                factory.setPort(5672);

                //创建一个新的连接
                Connection connection = factory.newConnection();

                //创建一个通道
                Channel channel = connection.createChannel();

                //声明要连接的队列
                channel.queueDeclare(QUEUE_NAME, false, false, false, null);  
                System.out.println("等待消息产生:");

                //创建消费者对象,用于读取消息
                QueueingConsumer consumer = new QueueingConsumer(channel);  
                channel.basicConsume(QUEUE_NAME, true, consumer);  
                
                //获取消息列队中的消息,打印在控制台
                QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
                String message = new String(delivery.getBody());  
                System.out.println("收到消息==============" + message);  

                //关闭通道和连接
                channel.close();
                connection.close();
            } catch (ShutdownSignalException | ConsumerCancelledException
                    | IOException | InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    }

}

=========================测试类结束===========================









































































































以上是关于java调用rabbitmq的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQJava系列5-Routing模式

RabbitMQ Java 客户端 - Java 依赖项(标准库?)

列出与rabbitmq java客户端API交换的绑定

RabbitMQ 客户端开发向导

java如何调用别人系统的接口

java中API怎么调用啊?