我有一个Java程序,它向RabbitMQ发送消息。我只知道交易所的名字。没有队列、绑定等。
我的问题是:我如何才能看到程序是否成功发送这些,只知道交换名称?
谢谢
问候,塞班
请看这里:https://www.rabbitmq.com/tutorials/tutorial-three-java.html
java prettyprint-override">String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, "EXCHANGE_NAME", "");
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag,
Envelope envelope,
AMQP.BasicProperties properties,
byte[] body) throws IOException
{
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
}
};
channel.basicConsume(queueName, true, consumer);
简而言之,你必须:
重要的是要知道你有什么样的交换
,因为绑定可以改变,在扇出
或主题
或直接
之间
本例中为< code >扇出
假设我们有RabbitMQ Exchange,我们需要创建一个队列来将消息推送到交换机并从队列中使用它,如下所示
private static final String EXCHANGE_NAME = "2022"; private static final String QUEUE_NAME = "2022"; private final static boolean durable = true; // now we need to create a connection to rabbitmq server // ConnectionFactory factory = new ConnectionFactory(); factory.setUsername("guest"); factory.setPassword("guest"); factory.setVirtualHost("/"); factory.setHost("127.0.0.1"); factory.setPort(5672); Connection conn = factory.newConnection(); // create rabbitmq connection chaneel Channel channel = conn.createChannel(); //Declare Exchange // channel.exchangeDeclare(EXCHANGE_NAME, "topic", true); // push message to rabbitmq exchange channel.basicPublish(EXCHANGE_NAME, "routingkey", null, yourmessage.getBytes());
上面的工作作为生产者,现在我们需要创建队列消费者
private static final String EXCHANGE_NAME = "2022"; private static final String QUEUE_NAME = "2022"; private final static boolean durable = true; // now we need to create a connection to rabbitmq server // ConnectionFactory factory = new ConnectionFactory(); factory.setUsername("guest"); factory.setPassword("guest"); factory.setVirtualHost("/"); factory.setHost("127.0.0.1"); factory.setPort(5672); Connection conn = factory.newConnection(); // create rabbitmq connection chaneel Channel channel = conn.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME, "topic", true); //Queue Declare // channel.queueDeclare(QUEUE_NAME, true, false, false, null); //Queue bind // channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "routingkey"); // Queue Consume // QueueingConsumer consumer = new QueueingConsumer(channel); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" [x] Received '" + message + "'"); }
您可以使用RabbitMQ启用发布者确认。这就像有一个发送事务,RabbitMQ会告诉您消息是否已成功发送。
问题内容: 一个典型的Redis聊天示例将如下所示(仅举一个这样的示例,请参见https://github.com/emrahayanoglu/Socket.io- Redis-RealTime-Chat- Example/blob/master/chatServer.js ): 但是,这里的问题是,当“断开连接”时,侦听器仍然处于连接状态。控制台将继续打印出。如果要检查的事件列表,他们仍然会发现
我使用spring amqp和rabbitmq在我的应用程序中交换消息。一旦我的应用程序启动,我将在我的tomcat控制台中不断看到大量的消息监听日志。我想禁用。怎么做? 下面是我的log4j配置。尽管我只提到了文件appender,但所有侦听器日志都在我的应用服务器控制台中打印。 需要添加任何配置吗? 编辑帖子: 我添加了在JAVA_OPTS中。请在下面找到日志。 我的项目结构如下所示。 项目结
我正在使用 发送和 对于现在从rappid mq接收消息,我希望使用类似以下内容的侦听器: 问题是onMessage监听器与Messages一起工作是否有可能在类似的函数中接收简单的可序列化对象?
我试图理解RabbitMQ对发布的保证——到目前为止没有成功——我想知道是否有人可以帮助我解决这个问题: 绑定 交易所 A - 交易所 A - 交易所B- 交易所C- 属性 B1和C1被声明为持久队列 B1和C1都是镜像队列 所有交换机均声明为扇出 我正在运行一个具有多个节点的RabbitMQ集群,因此队列可以在不同的节点上主控 如果我发布到Exchange A,那么我是将消息发布到所有队列还是不
我正在开发一个基于通知的应用程序,为此我需要监听传入的通知。我已经能够监听来电、短信、邮件等。我不知道如何通过代码监听Whatsapp上朋友的ping或消息。这实际上能做到吗?如果是,怎么做?可访问性服务是否可以用于此,使用包名为“com.whatsapp”?
问题内容: 我有一个反向代理背后的应用程序,我希望它仅侦听localhost / 127.0.0.1.。 我希望这可以工作: 要么 …但是我得到一个错误: 在不指定主机名的情况下运行应用程序可以正常工作,即。 我正在运行Node v0.6.14 和express @ 2.5.5 ,并阅读了此Google 网上论坛的 讨论, 并在Express application.js中找到此注释,并说:“此方