标签:
下面是一个使用公共方法发送持久化消息到 RabbitMQ 的示例代码:
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class RabbitMQSender {
private static final String QUEUE_NAME = "my_queue";
private static Connection connection;
public static void main(String[] args) throws Exception {
try {
// 创建连接
createConnection();
// 创建通道
Channel channel = connection.createChannel();
// 发送持久化消息
sendMessage(channel, "Hello RabbitMQ!", true);
// 关闭通道
channel.close();
} finally {
// 关闭连接
closeConnection();
}
}
private static void createConnection() throws IOException {
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
// 创建持久化连接
factory.setConnectionNameStrategy(f -> "MyConnection");
// 创建连接
connection = factory.newConnection();
}
private static void closeConnection() throws IOException {
if (connection != null && connection.isOpen()) {
connection.close();
}
}
private static void sendMessage(Channel channel, String message, boolean durable) throws IOException {
// 声明队列
channel.queueDeclare(QUEUE_NAME, durable, false, false, null);
// 发布持久化消息到队列
channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes(StandardCharsets.UTF_8));
System.out.println("Sent: " + message);
}
}
Java
在这个示例中,我们创建了一个 createConnection
方法用于创建连接,并在 main
方法中调用该方法。然后,我们在 sendMessage
方法中发送持久化消息到 RabbitMQ 的队列。
为了使连接持久化,我们在创建连接工厂时指定了 setConnectionNameStrategy
,并设置了连接名为 "MyConnection"。为了发送持久化消息,我们通过 basicPublish
方法将消息与持久化的属性 MessageProperties.PERSISTENT_TEXT_PLAIN
一起发布到队列。
最后,我们在 finally
块中调用 closeConnection
方法来关闭连接。
这样,你可以将 sendMessage
方法作为一个公共方法,在需要发送持久化消息的地方调用它。并且通过创建和关闭连接的公共方法,在发送完消息之后关闭连接,以防止资源泄漏和连接问题。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。