use of com.qcloud.cmq.entity.CmqResponse in project cmq-java-sdk by tencentyun.
the class Queue method send.
public CmqResponse send(String msgBody, int delayTime) throws Exception {
TreeMap<String, String> param = new TreeMap<>();
param.put("queueName", this.queueName);
param.put("msgBody", msgBody);
param.put("delaySeconds", Integer.toString(delayTime));
String result = this.client.call("SendMessage", param);
JSONObject jsonObj = new JSONObject(result);
CMQTool.checkResult(result);
CmqResponse cmqResponse = new CmqResponse();
cmqResponse.setCode(jsonObj.getInt("code"));
cmqResponse.setMsgId(jsonObj.getString("msgId"));
cmqResponse.setRequestId(jsonObj.getString("requestId"));
return cmqResponse;
}
use of com.qcloud.cmq.entity.CmqResponse in project cmq-java-sdk by tencentyun.
the class Producer method main.
public static void main(String[] args) {
// 从腾讯云官网查询的云API密钥信息
String secretId = "";
String secretKey = "";
String endpoint = "https://cmq-queue-{$region}.api.qcloud.com";
String queueName = "test";
Account account = new Account(endpoint, secretId, secretKey);
try {
// 创建新队列
// System.out.println("---------------create queue ...---------------");
// QueueMeta meta = new QueueMeta();
// meta.pollingWaitSeconds = 10;
// meta.visibilityTimeout = 10;
// meta.maxMsgSize = 1048576;
// meta.msgRetentionSeconds = 345600;
// Queue queue = account.createQueue(queueName,meta);
// System.out.println(queueName + " created");
// 列出当前帐号下所有队列名字
// System.out.println("---------------list queue ...---------------");
// ArrayList<String> vtQueue = new ArrayList<String>();
// int totalCount = account.listQueue("",-1,-1,vtQueue);
// System.out.println("totalCount:" + totalCount);
// for(int i=0;i<vtQueue.size();i++)
// {
// System.out.println("queueName:" + vtQueue.get(i));
// }
// 删除队列
// System.out.println("---------------delete queue ...---------------");
// account.deleteQueue(queueName);
// System.out.println(queueName + " deleted");
// 获得队列实例(此处直接使用现有队列进行操作,也可按照上面的注释创建队列)
System.out.println("--------------- queue[qiyuan-test] ---------------");
Queue queue = account.getQueue(queueName);
// 设置队列属性
System.out.println("---------------set queue attributes ...---------------");
QueueMeta meta1 = new QueueMeta();
meta1.pollingWaitSeconds = 20;
queue.setQueueAttributes(meta1);
System.out.println("pollingWaitSeconds=20 set");
// 获取队列属性
System.out.println("---------------get queue attributes ...---------------");
QueueMeta meta2 = queue.getQueueAttributes();
System.out.println("maxMsgHeapNum:" + meta2.maxMsgHeapNum);
System.out.println("pollingWaitSeconds:" + meta2.pollingWaitSeconds);
System.out.println("visibilityTimeout:" + meta2.visibilityTimeout);
System.out.println("maxMsgSize:" + meta2.maxMsgSize);
System.out.println("createTime:" + meta2.createTime);
System.out.println("lastModifyTime:" + meta2.lastModifyTime);
System.out.println("activeMsgNum:" + meta2.activeMsgNum);
System.out.println("inactiveMsgNum:" + meta2.inactiveMsgNum);
// 发送单条信息
System.out.println("---------------send message ...---------------");
String msg = "hello!";
CmqResponse cmqResponse = queue.send(msg);
System.out.println("==> send success! msg_id:" + cmqResponse.getMsgId() + " requestId:" + cmqResponse.getRequestId());
// 批量操作
// 批量发送消息
System.out.println("---------------batch send message ...---------------");
ArrayList<String> vtMsgBody = new ArrayList<String>();
String msgBody = "hello world,this is cmq sdk for java 1";
vtMsgBody.add(msgBody);
msgBody = "hello world,this is cmq sdk for java 2";
vtMsgBody.add(msgBody);
msgBody = "hello world,this is cmq sdk for java 3";
vtMsgBody.add(msgBody);
List<CmqResponse> cmqResponses = queue.batchSend(vtMsgBody);
for (int i = 0; i < vtMsgBody.size(); i++) {
System.out.println("[" + vtMsgBody.get(i) + "] sent");
}
for (int i = 0; i < cmqResponses.size(); i++) {
CmqResponse response = cmqResponses.get(i);
System.out.println("msgId:" + response.getMsgId() + " requestId:" + response.getRequestId());
}
} catch (CMQServerException e1) {
System.out.println("Server Exception, " + e1.toString());
} catch (Exception e) {
System.out.println("error..." + e.toString());
}
}
use of com.qcloud.cmq.entity.CmqResponse in project cmq-java-sdk by tencentyun.
the class QueueTest method testBatchMessageReceive.
@Test
public void testBatchMessageReceive() throws Exception {
// 使用新接口,发送并使用老接口接收消息
QueueMeta meta = new QueueMeta();
meta.pollingWaitSeconds = 10;
meta.visibilityTimeout = 10;
meta.maxMsgSize = 1048576;
meta.msgRetentionSeconds = 345600;
String queueName1 = "testCmqQueue" + System.currentTimeMillis();
deleteQueueList.add(queueName1);
account.createQueue(queueName1, meta);
LocalDateTime now = LocalDateTime.now();
Thread.sleep(3000);
Queue queue = account.getQueue(queueName1);
Thread.sleep(3000);
ArrayList<String> vtMsgBody = new ArrayList<String>();
String msgBody = "hello world,this is cmq sdk for java 1";
vtMsgBody.add(msgBody);
msgBody = "hello world,this is cmq sdk for java 2";
vtMsgBody.add(msgBody);
msgBody = "hello world,this is cmq sdk for java 3";
vtMsgBody.add(msgBody);
List<CmqResponse> cmqResponses = queue.batchSend(vtMsgBody);
Assert.assertTrue(cmqResponses != null && cmqResponses.size() == 3);
Thread.sleep(2000);
// 保存服务器返回的消息句柄,用于删除消息
ArrayList<String> vtReceiptHandle = new ArrayList<>();
List<Message> msgList = queue.batchReceiveMessage(10, 10);
Assert.assertTrue(msgList != null && msgList.size() == 3);
for (int i = 0; i < msgList.size(); i++) {
Message msg1 = msgList.get(i);
Instant instant = Instant.ofEpochSecond(msg1.enqueueTime);
ZoneId zone = ZoneId.systemDefault();
LocalDateTime enqueueTime = LocalDateTime.ofInstant(instant, zone);
Assert.assertTrue(now.isBefore(enqueueTime));
Instant dequeueInstant = Instant.ofEpochSecond(msg1.firstDequeueTime);
LocalDateTime dequeueTime = LocalDateTime.ofInstant(dequeueInstant, zone);
Assert.assertTrue(enqueueTime.isBefore(dequeueTime) || enqueueTime.isEqual(dequeueTime));
Assert.assertEquals(1, msg1.dequeueCount);
vtReceiptHandle.add(msg1.receiptHandle);
}
queue.batchDeleteMessage(vtReceiptHandle);
}
Aggregations