消费者Work01
消费order
路由键对应的队列,代码演示:
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Work01 {
private static final ConnectionFactory factory = new ConnectionFactory();
private static Connection connection = null;
static {
factory.setHost("49.232.202.201");
factory.setUsername("gosuncn");
factory.setPassword("123123");
factory.setVirtualHost("/gosuncn");
try {
connection = factory.newConnection();
} catch (IOException | TimeoutException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Channel channel = connection.createChannel();
channel.exchangeDeclare(Constant.EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, Constant.EXCHANGE_NAME, "order");
channel.basicConsume(queueName, true, (consumerTag, message) -> {
System.out.println("DeliverCallback's consumerTag is {" + consumerTag + "}");
System.out.println("order队列消费消息的内容 = " + new String(message.getBody()));
}, consumerTag -> System.out.println("CancelCallback's consumerTag is {" + consumerTag + "}"));
}
}
消费者Work02
消费email
路由键对应的队列,代码演示:
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Work02 {
private static final ConnectionFactory factory = new ConnectionFactory();
private static Connection connection = null;
static {
factory.setHost("49.232.202.201");
factory.setUsername("gosuncn");
factory.setPassword("123123");
factory.setVirtualHost("/gosuncn");
try {
connection = factory.newConnection();
} catch (IOException | TimeoutException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Channel channel = connection.createChannel();
channel.exchangeDeclare(Constant.EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, Constant.EXCHANGE_NAME, "email");
channel.basicConsume(queueName, true, (consumerTag, message) -> {
System.out.println("DeliverCallback's consumerTag is {" + consumerTag + "}");
System.out.println("email队列消费消息的内容 = " + new String(message.getBody()));
}, consumerTag -> System.out.println("CancelCallback's consumerTag is {" + consumerTag + "}"));
}
}
发送消息到交换机中:
package fun.gosuncn;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class SendMessage {
private static final ConnectionFactory factory = new ConnectionFactory();
private static Connection connectionStatic = null;
static {
factory.setHost("49.232.202.201");
factory.setUsername("gosuncn");
factory.setPassword("123123");
factory.setVirtualHost("/gosuncn");
try {
connectionStatic = factory.newConnection();
} catch (IOException | TimeoutException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try (Connection connection = connectionStatic; Channel channel = connection.createChannel()) {
channel.exchangeDeclare(Constant.EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
channel.basicPublish(Constant.EXCHANGE_NAME, "order", null, ("order-888").getBytes());
channel.basicPublish(Constant.EXCHANGE_NAME, "email", null, ("email-666").getBytes());
System.out.println("消息已发送至交换机");
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
我们向路由键为order
的队列发送了消息order-888
,向路由键为email
的队列发送了消息email-666
。运行一下,看看:
看下队列视图:
交换机视图中,有个apollo
的交换机。可以查看一下,类型是direct
。