|
@@ -0,0 +1,33 @@
|
|
|
+package com.sf.queue;
|
|
|
+
|
|
|
+import com.rabbitmq.client.AMQP;
|
|
|
+import com.rabbitmq.client.Channel;
|
|
|
+import com.sf.util.MqUtils;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Scanner;
|
|
|
+
|
|
|
+public class Producer {
|
|
|
+
|
|
|
+ private final static String QUEUE_NAME = "hello";
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ Channel channel = MqUtils.getChannel();
|
|
|
+ // 定义队列支持的最大级别
|
|
|
+ HashMap<String, Object> arguments = new HashMap<>();
|
|
|
+ arguments.put("x-max-priority", 10);
|
|
|
+ // 官方允许是0~255之间,此处设置为10,即允许优先级范围从0~10(不要设置过大以免浪费cpu和内存)
|
|
|
+ channel.queueDeclare(QUEUE_NAME, false, false, false, arguments);
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
+ System.out.println("请输入消息:");
|
|
|
+ while (scanner.hasNext()) {
|
|
|
+ String message = scanner.next();
|
|
|
+ System.out.println(message);
|
|
|
+ // 发送消息时设置消息的优先级
|
|
|
+ AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties().builder();
|
|
|
+ builder.deliveryMode(2); // 持久化消息
|
|
|
+ builder.priority(5); //设置消息的优先级别
|
|
|
+ channel.basicPublish("", QUEUE_NAME, builder.build(), message.getBytes());
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|