Utils类
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 RabbitMqUtils {
public static ConnectionFactory getFactory() {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.139.129");
factory.setUsername("guest");
factory.setPassword("guest");
// 1 == > n
factory.setVirtualHost("/");
return factory;
}
public static Connection getConnection() throws IOException, TimeoutException {
ConnectionFactory factory = getFactory();
return factory.newConnection();
}
public static Channel getChannel() throws IOException, TimeoutException {
Connection connection = getConnection();
return connection.createChannel();
}
}
Publish/Subscribe
publish
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import utils.RabbitMqUtils;
public class EmitLog {
private static final String EXCHANGE_NAME = "logs";
public static void main(String[] argv) throws Exception {
try (Connection connection = RabbitMqUtils.getConnection();
Channel channel = connection.createChannel()) {
{
channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT);
channel.queueDeclare("email", true, false, false, null);
channel.queueDeclare("phone", true, false, false, null);
channel.queueBind("phone", EXCHANGE_NAME, "");
channel.queueBind("email", EXCHANGE_NAME, "");
}
String message = argv.length < 1 ? "info: Hello Python!" :
String.join(" ", argv);
channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
subscriber
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import utils.RabbitMqUtils;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class ReceiveLogs {
private static final String EXCHANGE_NAME = "logs";
static Channel channel;
private static String queueName = "email";
static {
try {
channel = RabbitMqUtils.getChannel();
channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT);
channel.queueDeclare(queueName, true, false, false, null);
channel.queueBind(queueName, EXCHANGE_NAME, "");
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
public static