本文整理汇总了Java中org.apache.activemq.artemis.api.core.client.ClientMessage.putBytesProperty方法的典型用法代码示例。如果您正苦于以下问题:Java ClientMessage.putBytesProperty方法的具体用法?Java ClientMessage.putBytesProperty怎么用?Java ClientMessage.putBytesProperty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.activemq.artemis.api.core.client.ClientMessage
的用法示例。
在下文中一共展示了ClientMessage.putBytesProperty方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: sendMessages
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
private void sendMessages() throws Exception {
ClientSession session = sf.createSession(true, true);
String filter = null;
session.createAddress(SimpleString.toSimpleString(ADDRESS), RoutingType.MULTICAST, false);
session.createQueue(ADDRESS, RoutingType.MULTICAST, ADDRESS, filter, true);
ClientProducer producer = session.createProducer(ADDRESS);
for (int i = 0; i < numMessages; i++) {
ClientMessage message = session.createMessage(true);
setBody(i, message);
message.putIntProperty("int", i);
message.putShortProperty("short", (short) i);
message.putByteProperty("byte", (byte) i);
message.putFloatProperty("float", floatValue(i));
message.putStringProperty(SIMPLE_STRING_KEY, new SimpleString(Integer.toString(i)));
message.putBytesProperty("byte[]", byteArray(i));
message.putObjectProperty("null-value", null);
producer.send(message);
}
session.commit();
}
示例2: testRollbackThenSend
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testRollbackThenSend() throws Exception {
ClientSession session = sf.createSession(false, false, false);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID1 = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData());
message.putStringProperty("key", dupID1.toString());
producer.send(message);
session.rollback();
message = createMessage(session, 0);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData());
message.putStringProperty("key", dupID1.toString());
producer.send(message);
session.commit();
message = consumer.receive(5000);
assertNotNull(message);
assertTrue(message.getStringProperty("key").equals(dupID1.toString()));
}
示例3: testSimpleDuplicateDetecion
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testSimpleDuplicateDetecion() throws Exception {
ClientSession session = sf.createSession(false, true, true);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = createMessage(session, 0);
producer.send(message);
ClientMessage message2 = consumer.receive(1000);
Assert.assertEquals(0, message2.getObjectProperty(propKey));
message = createMessage(session, 1);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message2 = consumer.receive(1000);
Assert.assertEquals(1, message2.getObjectProperty(propKey));
message = createMessage(session, 2);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
message = createMessage(session, 3);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
// Now try with a different id
message = createMessage(session, 4);
SimpleString dupID2 = new SimpleString("hijklmnop");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData());
producer.send(message);
message2 = consumer.receive(1000);
Assert.assertEquals(4, message2.getObjectProperty(propKey));
message = createMessage(session, 5);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
message = createMessage(session, 6);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
}
示例4: testDuplicateIDCacheMemoryRetention
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
public void testDuplicateIDCacheMemoryRetention(boolean temporary) throws Exception {
final int TEST_SIZE = 100;
locator = createInVMNonHALocator().setBlockOnNonDurableSend(true);
sf = createSessionFactory(locator);
ClientSession session = sf.createSession(false, true, true);
session.start();
Assert.assertEquals(0, ((PostOfficeImpl) server.getPostOffice()).getDuplicateIDCaches().size());
final SimpleString addressName = new SimpleString("DuplicateDetectionTestAddress");
for (int i = 0; i < TEST_SIZE; i++) {
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue_" + i);
if (temporary) {
session.createTemporaryQueue(addressName, queueName, null);
} else {
session.createQueue(addressName, queueName, null, true);
}
ClientProducer producer = session.createProducer(addressName);
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = createMessage(session, 1);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
ClientMessage message2 = consumer.receive(1000);
Assert.assertEquals(1, message2.getObjectProperty(propKey));
message = createMessage(session, 2);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
message = createMessage(session, 3);
message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData());
producer.send(message);
message2 = consumer.receive(1000);
Assert.assertEquals(3, message2.getObjectProperty(propKey));
message = createMessage(session, 4);
message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData());
producer.send(message);
message2 = consumer.receiveImmediate();
Assert.assertNull(message2);
producer.close();
consumer.close();
// there will be 2 ID caches, one for messages using "_AMQ_DUPL_ID" and one for "_AMQ_BRIDGE_DUP"
Assert.assertEquals(2, ((PostOfficeImpl) server.getPostOffice()).getDuplicateIDCaches().size());
session.deleteQueue(queueName);
Assert.assertEquals(0, ((PostOfficeImpl) server.getPostOffice()).getDuplicateIDCaches().size());
}
Assert.assertEquals(0, ((PostOfficeImpl) server.getPostOffice()).getDuplicateIDCaches().size());
}
示例5: testTransactedDuplicateDetection3
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testTransactedDuplicateDetection3() throws Exception {
ClientSession session = sf.createSession(false, false, false);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID1 = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData());
producer.send(message);
message = createMessage(session, 1);
SimpleString dupID2 = new SimpleString("hijklmno");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData());
producer.send(message);
session.commit();
// These next two should get rejected
message = createMessage(session, 2);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData());
producer.send(message);
message = createMessage(session, 3);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData());
producer.send(message);
try {
session.commit();
} catch (Exception e) {
session.rollback();
}
message = consumer.receive(250);
Assert.assertEquals(0, message.getObjectProperty(propKey));
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
}
示例6: addPayload
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Override
protected void addPayload(ClientMessage message) {
message.putBytesProperty("payload", new byte[20 * 1024]);
}
示例7: testFailMessagesDuplicates
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testFailMessagesDuplicates() throws Exception {
clearDataRecreateServerDirs();
Configuration config = createDefaultInVMConfig();
HashMap<String, AddressSettings> settings = new HashMap<>();
AddressSettings set = new AddressSettings();
set.setAddressFullMessagePolicy(AddressFullMessagePolicy.FAIL);
settings.put(PagingTest.ADDRESS.toString(), set);
server = createServer(true, config, 1024, 5 * 1024, settings);
server.start();
locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true);
sf = createSessionFactory(locator);
ClientSession session = addClientSession(sf.createSession(true, true, 0));
session.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true);
ClientProducer producer = session.createProducer(PagingTest.ADDRESS);
ClientMessage message = session.createMessage(true);
int biggerMessageSize = 2048;
byte[] body = new byte[biggerMessageSize];
ByteBuffer bb = ByteBuffer.wrap(body);
for (int j = 1; j <= biggerMessageSize; j++) {
bb.put(getSamplebyte(j));
}
message.getBodyBuffer().writeBytes(body);
// Send enough messages to fill up the address.
producer.send(message);
producer.send(message);
producer.send(message);
Queue q = (Queue) server.getPostOffice().getBinding(ADDRESS).getBindable();
Wait.waitFor(() -> 3 == getMessageCount(q));
Assert.assertEquals(3, getMessageCount(q));
// send a message with a dup ID that should fail b/c the address is full
SimpleString dupID1 = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData());
message.putStringProperty("key", dupID1.toString());
validateExceptionOnSending(producer, message);
Assert.assertEquals(3, getMessageCount(q));
ClientConsumer consumer = session.createConsumer(ADDRESS);
session.start();
// Receive a message...this should open space for another message
ClientMessage msgReceived = consumer.receive(5000);
assertNotNull(msgReceived);
msgReceived.acknowledge();
session.commit(); // to make sure it's on the server (roundtrip)
consumer.close();
Assert.assertEquals(2, getMessageCount(q));
producer.send(message);
Assert.assertEquals(3, getMessageCount(q));
consumer = session.createConsumer(ADDRESS);
for (int i = 0; i < 3; i++) {
msgReceived = consumer.receive(5000);
assertNotNull(msgReceived);
msgReceived.acknowledge();
session.commit();
}
}
示例8: testTransactedDuplicateDetection2
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testTransactedDuplicateDetection2() throws Exception {
ClientSession session = sf.createSession(false, false, false);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.rollback();
// Should be able to resend it and not get rejected since transaction didn't commit
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.commit();
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
}
示例9: testTransactedDuplicateDetection1
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testTransactedDuplicateDetection1() throws Exception {
ClientSession session = sf.createSession(false, false, false);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.close();
session = sf.createSession(false, false, false);
session.start();
producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
// Should be able to resend it and not get rejected since transaction didn't commit
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.commit();
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
}
示例10: testEntireTransactionRejected
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testEntireTransactionRejected() throws Exception {
ClientSession session = sf.createSession(false, false, false);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
final SimpleString queue2 = new SimpleString("queue2");
session.createQueue(queueName, queueName, null, false);
session.createQueue(queue2, queue2, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
ClientMessage message2 = createMessage(session, 0);
ClientProducer producer2 = session.createProducer(queue2);
producer2.send(message2);
session.commit();
session.close();
session = sf.createSession(false, false, false);
session.start();
ClientConsumer consumer2 = session.createConsumer(queue2);
producer = session.createProducer(queueName);
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
message = createMessage(session, 2);
producer.send(message);
message = createMessage(session, 3);
producer.send(message);
message = createMessage(session, 4);
producer.send(message);
message = consumer2.receive(5000);
assertNotNull(message);
message.acknowledge();
try {
session.commit();
} catch (ActiveMQDuplicateIdException die) {
session.rollback();
} catch (ActiveMQException e) {
fail("Invalid Exception type:" + e.getType());
}
ClientConsumer consumer = session.createConsumer(queueName);
message = consumer.receive(250);
Assert.assertEquals(0, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
message = consumer2.receive(5000);
assertNotNull(message);
message.acknowledge();
session.commit();
}
示例11: testXADuplicateDetection1
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetection1() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.close();
Xid xid2 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
// Should be able to resend it and not get rejected since transaction didn't commit
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
Xid xid3 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid3, XAResource.TMNOFLAGS);
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
DuplicateDetectionTest.log.info("ending session");
session.end(xid3, XAResource.TMSUCCESS);
DuplicateDetectionTest.log.info("preparing session");
session.prepare(xid3);
DuplicateDetectionTest.log.info("committing session");
session.commit(xid3, false);
}
示例12: testXADuplicateDetection2
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetection2() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.rollback(xid);
session.close();
Xid xid2 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
// Should be able to resend it and not get rejected since transaction didn't commit
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
Xid xid3 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid3, XAResource.TMNOFLAGS);
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
DuplicateDetectionTest.log.info("ending session");
session.end(xid3, XAResource.TMSUCCESS);
DuplicateDetectionTest.log.info("preparing session");
session.prepare(xid3);
DuplicateDetectionTest.log.info("committing session");
session.commit(xid3, false);
}
示例13: testXADuplicateDetection3
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetection3() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
Xid xid2 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
// Should NOT be able to resend it
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
Xid xid3 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid3, XAResource.TMNOFLAGS);
consumer.receive(250);
message = consumer.receiveImmediate();
Assert.assertNull(message);
DuplicateDetectionTest.log.info("ending session");
session.end(xid3, XAResource.TMSUCCESS);
DuplicateDetectionTest.log.info("preparing session");
session.prepare(xid3);
DuplicateDetectionTest.log.info("committing session");
session.commit(xid3, false);
}
示例14: testXADuplicateDetectionPrepareAndRollback
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetectionPrepareAndRollback() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.rollback(xid);
session.close();
Xid xid2 = new XidImpl("xa2".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
session.close();
session = sf.createSession(false, false, false);
session.start();
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage msgRec = consumer.receive(5000);
assertNotNull(msgRec);
msgRec.acknowledge();
session.commit();
}
示例15: testXADuplicateDetectionPrepareAndRollbackStopServer
import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetectionPrepareAndRollbackStopServer() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, true);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
server.stop();
waitForServerToStop(server);
server.start();
sf = createSessionFactory(locator);
session = sf.createSession(true, false, false);
session.start(xid, XAResource.TMJOIN);
session.end(xid, XAResource.TMSUCCESS);
session.rollback(xid);
session.close();
Xid xid2 = new XidImpl("xa2".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
session.close();
session = sf.createSession(false, false, false);
session.start();
ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage msgRec = consumer.receive(5000);
assertNotNull(msgRec);
msgRec.acknowledge();
session.commit();
}