10
10
11
11
public class RabbitMQProducer {
12
12
13
+ private static final String IP_ADDRESS = "127.0.0.1" ;
14
+ private static final Integer PORT = 5672 ;
15
+ private static final String USERNAME = "guest" ;
16
+ private static final String PASSWORD = "guest" ;
17
+
13
18
private static final String EXCHANGE_NAME = "exchange_demo" ;
14
19
private static final String ROUTING_KEY = "routingkey_demo" ;
15
- private static final String QUEUE_NAME = "queue_demo" ;
16
- private static final String IP_ADDRESS = "127.0.0.1" ;
17
- public static final Integer PORT = 5672 ;
20
+ public static final String QUEUE_NAME = "queue_demo" ; // 只有 QUEUE_NAME 需要共享给 RabbitMQConsumer
18
21
19
22
public static void main (String [] args ) throws IOException , TimeoutException {
20
23
// 创建连接
21
- ConnectionFactory factory = new ConnectionFactory ();
22
- factory .setHost (IP_ADDRESS );
23
- factory .setPort (PORT );
24
- factory .setUsername ("guest" );
25
- factory .setPassword ("guest" );
26
- Connection connection = factory .newConnection ();
24
+ Connection connection = getConnection ();
25
+
27
26
// 创建信道
28
27
Channel channel = connection .createChannel ();
29
- // 创建交换器:direct、持久化、不自动删除
30
- channel .exchangeDeclare (EXCHANGE_NAME , "direct" , true , false , null );
31
- // 创建队列:持久化、非排他、非自动删除的队列
32
- channel .queueDeclare (QUEUE_NAME , true , false , false , null );
33
- // channel.queueDeclare(QUEUE_NAME + "_2", true, false, false, null);
34
- // 将交换器与队列通过路由键绑定
35
- channel .queueBind (QUEUE_NAME , EXCHANGE_NAME , ROUTING_KEY );
36
- // channel.queueBind(QUEUE_NAME + "_2", EXCHANGE_NAME, ROUTING_KEY);
37
28
38
- // 发送一条消息
39
- for (int i = 0 ; i < 1000 ; i ++) {
29
+ // 初始化测试用的 Exchange 和 Queue
30
+ initExchangeAndQueue (channel );
31
+
32
+ // 发送 3 条消息
33
+ for (int i = 0 ; i < 3 ; i ++) {
40
34
String message = "Hello World" + i ;
41
35
channel .basicPublish (EXCHANGE_NAME , ROUTING_KEY , MessageProperties .PERSISTENT_TEXT_PLAIN , message .getBytes ());
42
36
}
@@ -46,4 +40,26 @@ public static void main(String[] args) throws IOException, TimeoutException {
46
40
connection .close ();
47
41
}
48
42
43
+ public static Connection getConnection () throws IOException , TimeoutException {
44
+ ConnectionFactory factory = new ConnectionFactory ();
45
+ factory .setHost (IP_ADDRESS );
46
+ factory .setPort (PORT );
47
+ factory .setUsername (USERNAME );
48
+ factory .setPassword (PASSWORD );
49
+ return factory .newConnection ();
50
+ }
51
+
52
+ // 创建 RabbitMQ Exchange 和 Queue ,然后使用 ROUTING_KEY 路由键将两者绑定。
53
+ // 该步骤,其实可以在 RabbitMQ Management 上操作,并不一定需要在代码中
54
+ private static void initExchangeAndQueue (Channel channel ) throws IOException {
55
+ // 创建交换器:direct、持久化、不自动删除
56
+ channel .exchangeDeclare (EXCHANGE_NAME , "direct" , true , false , null );
57
+
58
+ // 创建队列:持久化、非排他、非自动删除的队列
59
+ channel .queueDeclare (QUEUE_NAME , true , false , false , null );
60
+
61
+ // 将交换器与队列通过路由键绑定
62
+ channel .queueBind (QUEUE_NAME , EXCHANGE_NAME , ROUTING_KEY );
63
+ }
64
+
49
65
}
0 commit comments