|
@@ -0,0 +1,44 @@
|
|
|
|
|
+package space.anyi.rabbitMQ_learn.helloworld;
|
|
|
|
|
+
|
|
|
|
|
+import com.rabbitmq.client.Channel;
|
|
|
|
|
+import com.rabbitmq.client.Connection;
|
|
|
|
|
+import com.rabbitmq.client.ConnectionFactory;
|
|
|
|
|
+//生产者
|
|
|
|
|
+public class Send {
|
|
|
|
|
+ //队列的名称
|
|
|
|
|
+ private final static String QUEUE_NAME = "hello";
|
|
|
|
|
+ public static void main(String[] argv) throws Exception {
|
|
|
|
|
+ //1.创建连接工厂
|
|
|
|
|
+ ConnectionFactory factory = new ConnectionFactory();
|
|
|
|
|
+ //2.配置
|
|
|
|
|
+ //设置RabbitMQ服务端的主机地址
|
|
|
|
|
+ factory.setHost("localhost");
|
|
|
|
|
+ //实际生产中要配置用户名和密码等等
|
|
|
|
|
+// factory.setUsername("");
|
|
|
|
|
+// factory.setPassword("");
|
|
|
|
|
+ //3.创建连接,并拿到channel
|
|
|
|
|
+ //我们通过channel来操作RabbitMQ
|
|
|
|
|
+ try (Connection connection = factory.newConnection();
|
|
|
|
|
+ Channel channel = connection.createChannel()) {
|
|
|
|
|
+ //4.给channel配置队列的消息
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 第一个参数(queue)是队列的名称
|
|
|
|
|
+ * 第二参数是(durable)这是是否持久化队列
|
|
|
|
|
+ * 第三个参数(exclusive)表示是否为独占队列,独占队列只允许创建该队列的连接进行操作,其他连接无法操作该队列(服务重启后可能谁也无法操作这个队列)
|
|
|
|
|
+ * 第四个参数(autoDelete)表示是否为自动删除队列,该队列没有连接使用时,自动删除队列
|
|
|
|
|
+ * 第五个参数(arguments)表示其它额外的参数
|
|
|
|
|
+ */
|
|
|
|
|
+ channel.queueDeclare(QUEUE_NAME, false, false, false, null);
|
|
|
|
|
+ String message = "Hello World!";
|
|
|
|
|
+ //5.生产消息
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 第一个参数(exchange)指定一个交换机
|
|
|
|
|
+ * 第二个参数(routingKey)表示队列的名称
|
|
|
|
|
+ * 第三个参数(props)表示携带的额外属性
|
|
|
|
|
+ * 第四个参数(body)是要生产的消息本身
|
|
|
|
|
+ */
|
|
|
|
|
+ channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
|
|
|
|
|
+ System.out.println(" [x] Sent '" + message + "'");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|