package com.xuz.work;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;
public class Worker {
private static final String TASK_QUEUE_NAME = "task_queue";
public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
Connection conn = factory.newConnection();
Channel channel = conn.createChannel();
/**
* true:
* 这样设置之后,服务器收到消息后就会立刻将消息写入到硬盘,就可以防止突然服务器挂掉,而引起数据丢失了,但是服务器如果刚收到消息,还没有来得写入硬盘,就挂掉了,这样
* 无法避免消息得丢失。
*/
channel.queueDeclare(TASK_QUEUE_NAME, true, false, false, null);
System.out.println("waiting for message.To exit press CTRL+C");
channel.basicQos(1);
QueueingConsumer consumer = new QueueingConsumer(channel);
/**
* false:设置确认消息,true表示接收到消息之后,将返回给服务端确定消息
*/
channel.basicConsume(TASK_QUEUE_NAME, false,consumer);
while(true){
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println("Received:["+message+"] from Task");
doWork(message);
System.out.println("Done!");
//设置消息确认机制,如将如下代码注释掉,则
//一旦将autoAck关闭之后,一定要记得处理完消息之后,向服务器确认消息。否则服务器将会一直转发该消息
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
}
}
private static void doWork(String message) throws InterruptedException {
for (char ch : message.toCharArray()) {
if(ch == '.')Thread.sleep(1000);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
rabbitMQ&Topic.zip (52个子文件)
rabbitMQ_2014_05_05
bin
com
xuz
route
EmitLogDirect.class 3KB
ReceiveLogsDirectWarning.class 3KB
ReceiveLogsDirectInfo.class 3KB
ReceiveLogsDirectError.class 3KB
ReceiveLogsDirectAll.class 3KB
send
Sender01.class 2KB
work
Worker.class 3KB
Worker01.class 3KB
ps
ReceiveLogs.class 3KB
ReceiveLogs04.class 3KB
ReceiveLogs02.class 3KB
EmitLog.class 2KB
ReceiveLogs03.class 3KB
recv
Recv01.class 2KB
task
NewTask.class 3KB
topic
ReceiveLogsTopicError.class 3KB
ReceiveLogsTopic04.class 3KB
ReceiveLogsTopic.class 4KB
ReceiveLogsTopicWarning.class 3KB
ReceiveLogsTopic03.class 3KB
EmitLogTopic.class 3KB
ReceiveLogsTopicInfo.class 4KB
.settings
org.eclipse.jdt.core.prefs 629B
src
com
xuz
route
ReceiveLogsDirectInfo.java 2KB
EmitLogDirect.java 2KB
ReceiveLogsDirectError.java 2KB
ReceiveLogsDirectWarning.java 2KB
ReceiveLogsDirectAll.java 2KB
send
Sender01.java 1015B
work
Worker01.java 2KB
Worker.java 2KB
ps
EmitLog.java 1KB
ReceiveLogs02.java 1KB
ReceiveLogs.java 1KB
ReceiveLogs04.java 1KB
ReceiveLogs03.java 1KB
recv
Recv01.java 1KB
task
NewTask.java 2KB
topic
ReceiveLogsTopicError.java 2KB
ReceiveLogsTopicWarning.java 2KB
ReceiveLogsTopic.java 2KB
ReceiveLogsTopic04.java 2KB
ReceiveLogsTopic03.java 2KB
ReceiveLogsTopicInfo.java 2KB
EmitLogTopic.java 2KB
.project 395B
.classpath 607B
lib
rabbitmq-client-tests.jar 413KB
junit.jar 118KB
rabbitmq-client.jar 385KB
commons-io-1.2.jar 64KB
commons-cli-1.1.jar 35KB
共 52 条
- 1
资源评论
- xiaoyatouvsanan2014-06-16可以运行,不错
来生做一个苦行僧
- 粉丝: 128
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功