某文件示例
package cn.xxx.crm.boss;
import cn.xxxx.crm.manager.mq.rabbit.AliyunCredentialsProvider;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeoutException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author zss
* @date 2022/4/25 14:55
* @Email:451682479@qq.com
*/
public class MqTest {
public static final String HOST = "qwer.mq-amqp.cn-hangzhou-111111-a.aliyuncs.com";
public static final String resourceOwnerId = "qwert";
public static final String USERNAME = "aaaaa";
public static final String PASSWORD = "xxxx";
public static final String V_HOST = "DevCrmHost1";
public static final int PORT = 5672;
private ConnectionFactory factory;
private Connection connection;
@Before
public void before() {
factory = new ConnectionFactory();
factory.setHost(HOST);
factory.setPort(PORT);
factory.setVirtualHost(V_HOST);
factory.setUsername(USERNAME);
factory.setPassword(PASSWORD);
AliyunCredentialsProvider credentialsProvider = new AliyunCredentialsProvider(
USERNAME, PASSWORD, resourceOwnerId);
factory.setCredentialsProvider(credentialsProvider);
factory.setAutomaticRecoveryEnabled(true);
factory.setNetworkRecoveryInterval(5000);
// 基于网络环境合理设置超时时间。
factory.setConnectionTimeout(30 * 1000);
factory.setHandshakeTimeout(30 * 1000);
factory.setShutdownTimeout(0);
}
@After
public void after() throws IOException {
if (null != connection) {
connection.close();
}
}
@Test
public void test() throws IOException, TimeoutException {
connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.exchangeDeclare("test-direct-exchange", "direct", true, false, false, null);
channel.queueDeclare("test-queue1", true, false, false, new HashMap<String, Object>());
channel.queueBind("test-queue1", "test-direct-exchange", "aaaa");
// 开始发送消息。
for (int i = 0; i < 100; i++) {
// ${ExchangeName}必须在消息队列RabbitMQ版控制台上已存在,并且Exchange的类型与控制台上的类型一致。
// BindingKey根据业务需求填入相应的BindingKey。
AMQP.BasicProperties props = new AMQP.BasicProperties.Builder().messageId(UUID.randomUUID().toString())
.build();
channel.basicPublish("test-direct-exchange", "aaaa", true, props,
("消息发送Body" + i).getBytes(StandardCharsets.UTF_8));
String a = "消息发送Body" + i;
System.out.println(a);
}
}
}