当前位置:   article > 正文

使用RabbitMQ遇到的问题(未解决)_rabbitmq connectionfactory type not found

rabbitmq connectionfactory type not found

ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured 

依赖:

  1. <dependency>
  2. <groupId>com.rabbitmq</groupId>
  3. <artifactId>amqp-client</artifactId>
  4. <version>5.7.1</version>
  5. </dependency>

ConnectionUtil:

  1. package com.xj.rabbitmq2.demo;
  2. import com.rabbitmq.client.Connection;
  3. import com.rabbitmq.client.ConnectionFactory;
  4. public class ConnectionUtil {
  5. /**
  6. * 建立与RabbitMQ的连接
  7. * @return
  8. * @throws Exception
  9. */
  10. public static Connection getConnection() throws Exception {
  11. //定义连接工厂
  12. ConnectionFactory factory = new ConnectionFactory();
  13. //设置服务地址
  14. factory.setHost("xx.x.x.xxx");
  15. //端口
  16. factory.setPort(5672);
  17. //设置账号信息,用户名、密码、vhost
  18. factory.setVirtualHost("/");//设置虚拟机,一个mq服务可以设置多个虚拟机,每个虚拟机就相当于一个独立的mq
  19. factory.setUsername("admin");
  20. factory.setPassword("admin");
  21. // 通过工厂获取连接
  22. Connection connection = factory.newConnection();
  23. return connection;
  24. }
  25. }

Send:

  1. package com.xj.rabbitmq2.demo;
  2. import com.rabbitmq.client.Channel;
  3. import com.rabbitmq.client.Connection;
  4. public class Send {
  5. private final static String QUEUE_NAME = "simple_queue";
  6. public static void main(String[] argv) throws Exception {
  7. // 1、获取到连接
  8. Connection connection = ConnectionUtil.getConnection();
  9. // 2、从连接中创建通道,使用通道才能完成消息相关的操作
  10. Channel channel = connection.createChannel();
  11. // 3、声明(创建)队列
  12. //参数:String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments
  13. /**
  14. * 参数明细
  15. * 1、queue 队列名称
  16. * 2、durable 是否持久化,如果持久化,mq重启后队列还在
  17. * 3、exclusive 是否独占连接,队列只允许在该连接中访问,如果connection连接关闭队列则自动删除,如果将此参数设置true可用于临时队列的创建
  18. * 4、autoDelete 自动删除,队列不再使用时是否自动删除此队列,如果将此参数和exclusive参数设置为true就可以实现临时队列(队列不用了就自动删除)
  19. * 5、arguments 参数,可以设置一个队列的扩展参数,比如:可设置存活时间
  20. */
  21. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  22. // 4、消息内容
  23. String message = "Hello World!";
  24. // 向指定的队列中发送消息
  25. //参数:String exchange, String routingKey, BasicProperties props, byte[] body
  26. /**
  27. * 参数明细:
  28. * 1、exchange,交换机,如果不指定将使用mq的默认交换机(设置为""
  29. * 2、routingKey,路由key,交换机根据路由key来将消息转发到指定的队列,如果使用默认交换机,routingKey设置为队列的名称
  30. * 3、props,消息的属性
  31. * 4、body,消息内容
  32. */
  33. channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
  34. System.out.println(" [x] Sent '" + message + "'");
  35. //关闭通道和连接(资源关闭最好用try-catch-finally语句处理)
  36. channel.close();
  37. connection.close();
  38. }
  39. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/798594
推荐阅读
相关标签
  

闽ICP备14008679号