RabbitMQ簡單消息發送
簡單代碼實現RabbitMQ消息發送
需要的依賴
<!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>x.x.x</version></dependency>
消息發送示例
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.Connection;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.io.IOException;
import java.util.concurrent.TimeoutException;@Slf4j
public class RabbitMQConfig2 {private static String addresses = "localhost:5672";private static String username = "xxx";private static String password = "xxx";public static void testSendMessage() throws IOException, TimeoutException {System.out.println("發送消息");// 1.建立連接CachingConnectionFactory factory = new CachingConnectionFactory();factory.setAddresses(addresses);factory.setUsername(username);factory.setPassword(password);factory.setVirtualHost("/");// 1.2.建立連接Connection connection = factory.createConnection();// 2.創建通道ChannelChannel channel = connection.createChannel(true);// 3.創建隊列/*聲明隊列參數1:隊列的名稱 queueName參數2:隊列是否支持持久化 false:不持久化處理參數3:隊列是否排它:是否允許其它的connection下的channel連接參數4:是否空閑時自動刪除,當最后一個consumer(消費者)斷開之后,隊列將自動刪除。參數5:參數是rabbitmq的一個擴展,功能非常強大,基本是AMPQ中沒有的。*/String queueName = "queue1";channel.queueDeclare(queueName, false, false, false, null);// 4.發送消息String message = "hello, rabbitmq!";/*發送消息:參數1:exchange 交換機 沒有就設置為 "" 值就可以了參數2:routingKey 路由的key 現在沒有設置key,直接使用隊列的名字queueName參數3:發送數據到隊列的時候,是否要帶一些參數。直接賦值null即可參數4:body 向隊列中發送的消息數據*/channel.basicPublish("", queueName, null, message.getBytes());System.out.println("發送消息成功:【" + message + "】");// 5.關閉通道和連接channel.close();connection.close();}}