Java 类javax.jms.TopicConnection 实例源码
项目:SpringTutorial
文件:BasicJMSChat.java
/**
* @param args
* @throws JMSException
* @throws IOException
*/
public static void main(String[] args) throws JMSException, IOException {
if (args.length != 1) {
System.out.println("User Name is required....");
} else {
userId = args[0];
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"com/springtraining/jms/spring-config.xml");
BasicJMSChat basicJMSChat = (BasicJMSChat) ctx
.getBean("basicJMSChat");
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) basicJMSChat.chatJMSTemplate
.getConnectionFactory();
TopicConnection tc = topicConnectionFactory.createTopicConnection();
basicJMSChat.publish(tc, basicJMSChat.chatTopic, userId);
basicJMSChat.subscribe(tc, basicJMSChat.chatTopic, basicJMSChat);
}
}
项目:activemq-artemis
文件:NetworkRemovesSubscriptionsTest.java
public void testWithSessionCloseOutsideTheLoop() throws Exception {
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
TopicSession subscriberSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
for (int i = 0; i < 100; i++) {
TopicSubscriber subscriber = subscriberSession.createSubscriber(topic);
DummyMessageListener listener = new DummyMessageListener();
subscriber.setMessageListener(listener);
subscriber.close();
}
subscriberSession.close();
connection.close();
Thread.sleep(1000);
Destination dest = backEnd.getRegionBroker().getDestinationMap().get(topic);
assertNotNull(dest);
assertTrue(dest.getConsumers().isEmpty());
}
项目:pooled-jms
文件:XAConnectionPoolTest.java
@Test(timeout = 60000)
public void testSenderAndPublisherDest() throws Exception {
JmsPoolXAConnectionFactory pcf = new JmsPoolXAConnectionFactory();
pcf.setConnectionFactory(new ActiveMQXAConnectionFactory(
"vm://test?broker.persistent=false&broker.useJmx=false"));
QueueConnection connection = pcf.createQueueConnection();
QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(session.createQueue("AA"));
assertNotNull(sender.getQueue().getQueueName());
connection.close();
TopicConnection topicConnection = pcf.createTopicConnection();
TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicPublisher topicPublisher = topicSession.createPublisher(topicSession.createTopic("AA"));
assertNotNull(topicPublisher.getTopic().getTopicName());
topicConnection.close();
pcf.stop();
}
项目:SpringTutorial
文件:BasicJMSChat.java
/**
* @param topicConnection
* @param chatTopic
* @param userId
* @throws JMSException
* @throws IOException
*/
void publish(TopicConnection topicConnection, Topic chatTopic, String userId)
throws JMSException, IOException {
TopicSession tsession = topicConnection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicPublisher topicPublisher = tsession.createPublisher(chatTopic);
topicConnection.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
while (true) {
String msgToSend = reader.readLine();
if (msgToSend.equalsIgnoreCase("exit")) {
topicConnection.close();
System.exit(0);
} else {
TextMessage msg = (TextMessage) tsession.createTextMessage();
msg.setText("\n["+userId + " : " + msgToSend+"]");
topicPublisher.publish(msg);
}
}
}
项目:ats-framework
文件:ManagedConnection.java
public static ManagedConnection create(
final Connection connection ) {
if ( (connection instanceof XAQueueConnection) && (connection instanceof XATopicConnection)) {
return new ManagedXAQueueTopicConnection(connection);
} else if (connection instanceof XAQueueConnection) {
return new ManagedXAQueueConnection((XAQueueConnection) connection);
} else if (connection instanceof XATopicConnection) {
return new ManagedXATopicConnection((XATopicConnection) connection);
} else if ( (connection instanceof QueueConnection) && (connection instanceof TopicConnection)) {
return new ManagedQueueTopicConnection(connection);
} else if (connection instanceof QueueConnection) {
return new ManagedQueueConnection((QueueConnection) connection);
} else if (connection instanceof TopicConnection) {
return new ManagedTopicConnection((TopicConnection) connection);
} else {
return new ManagedConnection(connection);
}
}
项目:axon-jms
文件:JmsPublisher.java
/**
* Sends the given {@code events} to the configured JMS Topic. It takes the current Unit of Work
* into account when available. Otherwise, it simply publishes directly.
*
* @param events the events to publish on the JMS Message Broker
*/
protected void send(List<? extends EventMessage<?>> events) {
try (TopicConnection topicConnection = connectionFactory.createTopicConnection()) {
int ackMode = isTransacted ? Session.SESSION_TRANSACTED : Session.AUTO_ACKNOWLEDGE;
TopicSession topicSession = topicConnection.createTopicSession(isTransacted, ackMode);
try (TopicPublisher publisher = topicSession.createPublisher(topic)) {
for (EventMessage event : events) {
Message jmsMessage = messageConverter.createJmsMessage(event, topicSession);
doSendMessage(publisher, jmsMessage);
}
} finally {
handleTransaction(topicSession);
}
} catch (JMSException ex) {
throw new EventPublicationFailedException(
"Unable to establish TopicConnection to JMS message broker.", ex);
}
}
项目:axon-jms
文件:JmsPublisherTest.java
@Test
public void testSendMessage_NoUnitOfWork() throws Exception {
TopicConnection connection = mock(TopicConnection.class);
when(connectionFactory.createTopicConnection()).thenReturn(connection);
TopicSession transactionalSession = mock(TopicSession.class);
when(connection.createTopicSession(true, Session.SESSION_TRANSACTED))
.thenReturn(transactionalSession);
when(transactionalSession.createPublisher(topic)).thenReturn(publisher);
GenericEventMessage<String> message = new GenericEventMessage<>("Message");
TextMessage jmsMessage = mock(TextMessage.class);
when(converter.createJmsMessage(message, transactionalSession)).thenReturn(jmsMessage);
eventBus.publish(message);
verify(publisher).publish(jmsMessage);
verify(transactionalSession).commit();
verify(transactionalSession).close();
}
项目:axon-jms
文件:JmsPublisherTest.java
@Test
public void testSendMessage_WithTransactionalUnitOfWork() throws Exception {
GenericEventMessage<String> message = new GenericEventMessage<>("Message");
final UnitOfWork<?> uow = DefaultUnitOfWork.startAndGet(message);
TopicConnection connection = mock(TopicConnection.class);
when(connectionFactory.createTopicConnection()).thenReturn(connection);
TopicSession transactionalSession = mock(TopicSession.class);
when(connection.createTopicSession(true, Session.SESSION_TRANSACTED))
.thenReturn(transactionalSession);
when(transactionalSession.createPublisher(topic)).thenReturn(publisher);
when(transactionalSession.getTransacted()).thenReturn(true);
TextMessage jmsMessage = mock(TextMessage.class);
when(converter.createJmsMessage(message, transactionalSession)).thenReturn(jmsMessage);
eventBus.publish(message);
uow.commit();
verify(publisher).publish(jmsMessage);
verify(transactionalSession).commit();
verify(transactionalSession).close();
}
项目:axon-jms
文件:JmsPublisherTest.java
@Test
public void testSendMessage_WithUnitOfWorkRollback() throws Exception {
GenericEventMessage<String> message = new GenericEventMessage<>("Message");
final UnitOfWork<?> uow = DefaultUnitOfWork.startAndGet(message);
TopicConnection connection = mock(TopicConnection.class);
when(connectionFactory.createTopicConnection()).thenReturn(connection);
TopicSession transactionalSession = mock(TopicSession.class);
when(connection.createTopicSession(true, Session.SESSION_TRANSACTED))
.thenReturn(transactionalSession);
when(transactionalSession.createPublisher(topic)).thenReturn(publisher);
when(transactionalSession.getTransacted()).thenReturn(true);
TextMessage jmsMessage = mock(TextMessage.class);
when(converter.createJmsMessage(message, transactionalSession)).thenReturn(jmsMessage);
eventBus.publish(message);
verify(transactionalSession, never()).rollback();
verify(transactionalSession, never()).commit();
verify(transactionalSession, never()).close();
uow.rollback();
verify(publisher, never()).publish(jmsMessage);
verify(transactionalSession, never()).commit();
verify(connectionFactory, never()).createTopicConnection();
}
项目:axon-jms
文件:JmsPublisherTest.java
@Test
public void testSendPersistentMessage() throws Exception {
cut.setPersistent(true);
cut.setMessageConverter(null);
cut.postConstruct();
TopicConnection connection = mock(TopicConnection.class);
when(connectionFactory.createTopicConnection()).thenReturn(connection);
TopicSession transactionalSession = mock(TopicSession.class);
when(connection.createTopicSession(true, Session.SESSION_TRANSACTED))
.thenReturn(transactionalSession);
when(transactionalSession.createPublisher(topic)).thenReturn(publisher);
TextMessage jmsMessage = mock(TextMessage.class);
when(transactionalSession.createTextMessage(any())).thenReturn(jmsMessage);
ArgumentCaptor<Message> jmsMsgCapture = ArgumentCaptor.forClass(Message.class);
doNothing().when(publisher).publish(jmsMsgCapture.capture());
eventBus.publish(new GenericEventMessage<>("Message"));
verify(jmsMessage).setJMSDeliveryMode(DeliveryMode.PERSISTENT);
}
项目:spring4-understanding
文件:SingleConnectionFactory.java
/**
* Create a default Session for this ConnectionFactory,
* adapting to JMS 1.0.2 style queue/topic mode if necessary.
* @param con the JMS Connection to operate on
* @param mode the Session acknowledgement mode
* ({@code Session.TRANSACTED} or one of the common modes)
* @return the newly created Session
* @throws JMSException if thrown by the JMS API
*/
protected Session createSession(Connection con, Integer mode) throws JMSException {
// Determine JMS API arguments...
boolean transacted = (mode == Session.SESSION_TRANSACTED);
int ackMode = (transacted ? Session.AUTO_ACKNOWLEDGE : mode);
// Now actually call the appropriate JMS factory method...
if (Boolean.FALSE.equals(this.pubSubMode) && con instanceof QueueConnection) {
return ((QueueConnection) con).createQueueSession(transacted, ackMode);
}
else if (Boolean.TRUE.equals(this.pubSubMode) && con instanceof TopicConnection) {
return ((TopicConnection) con).createTopicSession(transacted, ackMode);
}
else {
return con.createSession(transacted, ackMode);
}
}
项目:spring4-understanding
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnection() throws JMSException {
Connection con = mock(TopicConnection.class);
SingleConnectionFactory scf = new SingleConnectionFactory(con);
TopicConnection con1 = scf.createTopicConnection();
con1.start();
con1.stop();
con1.close();
TopicConnection con2 = scf.createTopicConnection();
con2.start();
con2.stop();
con2.close();
scf.destroy(); // should trigger actual close
verify(con, times(2)).start();
verify(con, times(2)).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:spring4-understanding
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnectionFactoryAndJms11Usage() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
given(cf.createConnection()).willReturn(con);
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
Connection con1 = scf.createConnection();
Connection con2 = scf.createConnection();
con1.start();
con2.start();
con1.close();
con2.close();
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:spring4-understanding
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
given(cf.createTopicConnection()).willReturn(con);
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
Connection con1 = scf.createTopicConnection();
Connection con2 = scf.createTopicConnection();
con1.start();
con2.start();
con1.close();
con2.close();
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:perf-harness
文件:AbstractJMSProvider.java
public TopicConnection getTopicConnection(TopicConnectionFactory tcf, String uniqueID )
throws JMSException {
final TopicConnection tc;
final String username = Config.parms.getString("us");
if (username != null && username.length() != 0) {
Log.logger.log(Level.INFO, "getTopicConnection(): authenticating as \"" + username + "\"");
final String password = Config.parms.getString("pw");
tc = tcf.createTopicConnection(username, password);
} else {
tc = tcf.createTopicConnection();
}
if (durable) {
// Note: change signature to match getConnection
setDurableConnectionId( tc, ((WorkerThread)Thread.currentThread()), uniqueID );
} // end if durable
return tc;
}
项目:cacheonix-core
文件:JMSSink.java
public JMSSink(final String tcfBindingName, final String topicBindingName, final String username,
final String password) {
try {
final Context ctx = new InitialContext();
final TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) lookup(ctx,
tcfBindingName);
final TopicConnection topicConnection =
topicConnectionFactory.createTopicConnection(username,
password);
topicConnection.start();
final TopicSession topicSession = topicConnection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
final Topic topic = (Topic) ctx.lookup(topicBindingName);
final TopicSubscriber topicSubscriber = topicSession.createSubscriber(topic);
topicSubscriber.setMessageListener(this);
} catch (final Exception e) {
logger.error("Could not read JMS message.", e);
}
}
项目:daq-eclipse
文件:SimpleJmsTopicConnector.java
protected void initializeInboundDestinationBridgesOutboundSide(TopicConnection connection) throws JMSException {
if (inboundTopicBridges != null) {
TopicSession outboundSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
for (InboundTopicBridge bridge : inboundTopicBridges) {
String TopicName = bridge.getInboundTopicName();
Topic foreignTopic = createForeignTopic(outboundSession, TopicName);
bridge.setConsumer(null);
bridge.setConsumerTopic(foreignTopic);
bridge.setConsumerConnection(connection);
bridge.setJmsConnector(this);
addInboundBridge(bridge);
}
outboundSession.close();
}
}
项目:daq-eclipse
文件:SimpleJmsTopicConnector.java
protected void initializeInboundDestinationBridgesLocalSide(TopicConnection connection) throws JMSException {
if (inboundTopicBridges != null) {
TopicSession localSession = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
for (InboundTopicBridge bridge : inboundTopicBridges) {
String localTopicName = bridge.getLocalTopicName();
Topic activemqTopic = createActiveMQTopic(localSession, localTopicName);
bridge.setProducerTopic(activemqTopic);
bridge.setProducerConnection(connection);
if (bridge.getJmsMessageConvertor() == null) {
bridge.setJmsMessageConvertor(getInboundMessageConvertor());
}
bridge.setJmsConnector(this);
addInboundBridge(bridge);
}
localSession.close();
}
}
项目:daq-eclipse
文件:SimpleJmsTopicConnector.java
protected void initializeOutboundDestinationBridgesOutboundSide(TopicConnection connection) throws JMSException {
if (outboundTopicBridges != null) {
TopicSession outboundSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
for (OutboundTopicBridge bridge : outboundTopicBridges) {
String topicName = bridge.getOutboundTopicName();
Topic foreignTopic = createForeignTopic(outboundSession, topicName);
bridge.setProducerTopic(foreignTopic);
bridge.setProducerConnection(connection);
if (bridge.getJmsMessageConvertor() == null) {
bridge.setJmsMessageConvertor(getOutboundMessageConvertor());
}
bridge.setJmsConnector(this);
addOutboundBridge(bridge);
}
outboundSession.close();
}
}
项目:daq-eclipse
文件:SimpleJmsTopicConnector.java
protected void initializeOutboundDestinationBridgesLocalSide(TopicConnection connection) throws JMSException {
if (outboundTopicBridges != null) {
TopicSession localSession =
connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
for (OutboundTopicBridge bridge : outboundTopicBridges) {
String localTopicName = bridge.getLocalTopicName();
Topic activemqTopic = createActiveMQTopic(localSession, localTopicName);
bridge.setConsumer(null);
bridge.setConsumerTopic(activemqTopic);
bridge.setConsumerConnection(connection);
bridge.setJmsConnector(this);
addOutboundBridge(bridge);
}
localSession.close();
}
}
项目:carbon-transports
文件:JMSConnectionResourceFactory.java
/**
* Create JMS {@link Session} instance on top of the provided {@link Connection} instance.
*
* @param connection JMS Connection.
* @return Session instance.
* @throws JMSConnectorException Error when creating the JMS Session.
*/
public Session createSession(Connection connection) throws JMSConnectorException {
try {
if (logger.isDebugEnabled()) {
logger.debug("Creating a new JMS Session on: " + this.connectionFactoryString);
}
if (JMSConstants.JMS_SPEC_VERSION_1_1.equals(jmsSpec) || JMSConstants.JMS_SPEC_VERSION_2_0
.equals(jmsSpec)) {
return connection.createSession(transactedSession, sessionAckMode);
} else if (JMSConstants.JMSDestinationType.QUEUE.equals(this.destinationType)) {
return ((QueueConnection) (connection)).createQueueSession(transactedSession, sessionAckMode);
} else {
return ((TopicConnection) (connection)).createTopicSession(transactedSession, sessionAckMode);
}
} catch (JMSException e) {
throw new JMSConnectorException(
"JMS Exception while obtaining session for factory " + connectionFactoryString, e);
}
}
项目:carbon-transports
文件:JMSConnectionResourceFactory.java
/**
* Close a JMS {@link Connection}.
* @param connection Connection that need to be closed.
* @throws JMSException if an error occurs while closing the connection.
*/
public void closeConnection(Connection connection) throws JMSException {
if (connection != null) {
if (logger.isDebugEnabled()) {
logger.debug("Closing a JMS Connection of: " + this.connectionFactoryString);
}
if ((JMSConstants.JMS_SPEC_VERSION_1_1.equals(jmsSpec)) || (JMSConstants.JMS_SPEC_VERSION_2_0
.equals(jmsSpec))) {
connection.close();
} else {
if (JMSConstants.JMSDestinationType.QUEUE.equals(this.destinationType)) {
((QueueConnection) connection).close();
} else {
((TopicConnection) connection).close();
}
}
}
}
项目:carbon-transports
文件:JMSServer.java
/**
* To publish the messages to a topic.
*
* @throws JMSException JMS Exception.
* @throws InterruptedException Interrupted exception while waiting in between messages.
*/
public void publishMessagesToTopic(String topicName) throws JMSException, InterruptedException {
TopicConnection topicConnection = (TopicConnection) connectionFactory.createConnection();
topicConnection.start();
TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = topicSession.createTopic(topicName);
MessageProducer topicSender = topicSession.createProducer(destination);
topicSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for (int index = 0; index < 10; index++) {
String topicText = "Topic Message : " + (index + 1);
TextMessage topicMessage = topicSession.createTextMessage(topicText);
topicSender.send(topicMessage);
logger.info("Publishing " + topicText + " to topic " + topicName);
Thread.sleep(1000);
}
topicConnection.close();
topicSession.close();
topicSender.close();
}
项目:activemq-artemis
文件:SimpleOpenWireTest.java
@Test
public void testNotificationProperties() throws Exception {
try (TopicConnection topicConnection = factory.createTopicConnection()) {
TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic notificationsTopic = topicSession.createTopic("activemq.notifications");
TopicSubscriber subscriber = topicSession.createSubscriber(notificationsTopic);
List<Message> receivedMessages = new CopyOnWriteArrayList<>();
subscriber.setMessageListener(receivedMessages::add);
topicConnection.start();
Wait.waitFor(() -> receivedMessages.size() > 0);
Assert.assertTrue(receivedMessages.size() > 0);
for (Message message : receivedMessages) {
assertNotNull(message);
assertNotNull(message.getStringProperty("_AMQ_NotifType"));
}
}
}
项目:activemq-artemis
文件:NetworkRemovesSubscriptionsTest.java
public void testWithSessionAndSubsciberClose() throws Exception {
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
for (int i = 0; i < 100; i++) {
TopicSession subscriberSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = subscriberSession.createSubscriber(topic);
DummyMessageListener listener = new DummyMessageListener();
subscriber.setMessageListener(listener);
subscriber.close();
subscriberSession.close();
}
connection.close();
Thread.sleep(1000);
Destination dest = backEnd.getRegionBroker().getDestinationMap().get(topic);
assertNotNull(dest);
assertTrue(dest.getConsumers().isEmpty());
}
项目:activemq-artemis
文件:NetworkRemovesSubscriptionsTest.java
public void testWithOneSubscriber() throws Exception {
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
TopicSession subscriberSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = subscriberSession.createSubscriber(topic);
DummyMessageListener listener = new DummyMessageListener();
subscriber.setMessageListener(listener);
subscriber.close();
subscriberSession.close();
connection.close();
Thread.sleep(1000);
Destination dest = backEnd.getRegionBroker().getDestinationMap().get(topic);
assertNotNull(dest);
assertTrue(dest.getConsumers().isEmpty());
}
项目:activemq-artemis
文件:NetworkRemovesSubscriptionsTest.java
public void testWithoutSessionAndSubsciberClose() throws Exception {
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
for (int i = 0; i < 100; i++) {
TopicSession subscriberSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = subscriberSession.createSubscriber(topic);
assertNotNull(subscriber);
}
connection.close();
Thread.sleep(1000);
Destination dest = backEnd.getRegionBroker().getDestinationMap().get(topic);
assertNotNull(dest);
assertTrue(dest.getConsumers().isEmpty());
}
项目:activemq-artemis
文件:NetworkRemovesSubscriptionsTest.java
/**
* Running this test you can produce a leak of only 2 ConsumerInfo on BE
* broker, NOT 200 as in other cases!
*/
public void testWithoutSessionAndSubsciberClosePlayAround() throws Exception {
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
for (int i = 0; i < 100; i++) {
TopicSession subscriberSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = subscriberSession.createSubscriber(topic);
DummyMessageListener listener = new DummyMessageListener();
subscriber.setMessageListener(listener);
if (i != 50) {
subscriber.close();
subscriberSession.close();
}
}
connection.close();
Thread.sleep(1000);
Destination dest = backEnd.getRegionBroker().getDestinationMap().get(topic);
assertNotNull(dest);
assertTrue(dest.getConsumers().isEmpty());
}
项目:activemq-artemis
文件:DurableSubscriptionHangTestCase.java
private Message collectMessagesFromDurableSubscriptionForOneMinute() throws Exception {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://" + brokerName);
TopicConnection connection = connectionFactory.createTopicConnection();
connection.setClientID(clientID);
TopicSession topicSession = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = topicSession.createTopic(topicName);
connection.start();
TopicSubscriber subscriber = topicSession.createDurableSubscriber(topic, durableSubName);
LOG.info("About to receive messages");
Message message = subscriber.receive(120000);
subscriber.close();
connection.close();
LOG.info("collectMessagesFromDurableSubscriptionForOneMinute done");
return message;
}
项目:activemq-artemis
文件:MessageConsumerTest.java
@Test
public void testGetNoLocalOnClosedConsumer() throws Exception {
Connection consumerConnection = null;
try {
consumerConnection = createConnection();
TopicConnection tc = (TopicConnection) consumerConnection;
TopicSession consumerSession = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber topicConsumer = consumerSession.createSubscriber(ActiveMQServerTestCase.topic1);
topicConsumer.close();
try {
topicConsumer.getNoLocal();
Assert.fail("must throw a JMS IllegalStateException");
} catch (javax.jms.IllegalStateException e) {
// OK
}
} finally {
if (consumerConnection != null) {
consumerConnection.close();
}
}
}
项目:activemq-artemis
文件:AcknowledgementTest.java
/**
* Topics shouldn't hold on to messages if there are no subscribers
*/
@Test
public void testPersistentMessagesForTopicDropped() throws Exception {
TopicConnection topicConn = createTopicConnection();
TopicSession sess = topicConn.createTopicSession(true, 0);
TopicPublisher pub = sess.createPublisher(ActiveMQServerTestCase.topic1);
pub.setDeliveryMode(DeliveryMode.PERSISTENT);
Message m = sess.createTextMessage("testing123");
pub.publish(m);
sess.commit();
topicConn.close();
checkEmpty(ActiveMQServerTestCase.topic1);
}
项目:activemq-artemis
文件:AcknowledgementTest.java
/**
* Topics shouldn't hold on to messages when the non-durable subscribers close
*/
@Test
public void testPersistentMessagesForTopicDropped2() throws Exception {
TopicConnection topicConn = createTopicConnection();
topicConn.start();
TopicSession sess = topicConn.createTopicSession(true, 0);
TopicPublisher pub = sess.createPublisher(ActiveMQServerTestCase.topic1);
TopicSubscriber sub = sess.createSubscriber(ActiveMQServerTestCase.topic1);
pub.setDeliveryMode(DeliveryMode.PERSISTENT);
Message m = sess.createTextMessage("testing123");
pub.publish(m);
sess.commit();
// receive but rollback
TextMessage m2 = (TextMessage) sub.receive(3000);
ProxyAssertSupport.assertNotNull(m2);
ProxyAssertSupport.assertEquals("testing123", m2.getText());
sess.rollback();
topicConn.close();
checkEmpty(ActiveMQServerTestCase.topic1);
}
项目:activemq-artemis
文件:ConnectionFactoryTest.java
private void assertConnectionType(Connection conn, String type) {
if ("generic".equals(type) || "queue".equals(type) || "topic".equals(type)) {
//generic
Assert.assertFalse(conn instanceof XAConnection);
Assert.assertTrue(conn instanceof QueueConnection);
Assert.assertFalse(conn instanceof XAQueueConnection);
Assert.assertTrue(conn instanceof TopicConnection);
Assert.assertFalse(conn instanceof XATopicConnection);
} else if ("xa".equals(type) || "xa-queue".equals(type) || "xa-topic".equals(type)) {
Assert.assertTrue(conn instanceof XAConnection);
Assert.assertTrue(conn instanceof QueueConnection);
Assert.assertTrue(conn instanceof XAQueueConnection);
Assert.assertTrue(conn instanceof TopicConnection);
Assert.assertTrue(conn instanceof XATopicConnection);
} else {
Assert.fail("Unknown connection type: " + type);
}
}
项目:activemq-artemis
文件:ActiveMQRAConnectionFactoryImpl.java
/**
* Create a topic connection
*
* @param userName The user name
* @param password The password
* @return The connection
* @throws JMSException Thrown if the operation fails
*/
@Override
public TopicConnection createTopicConnection(final String userName, final String password) throws JMSException {
if (ActiveMQRAConnectionFactoryImpl.trace) {
ActiveMQRALogger.LOGGER.trace("createTopicConnection(" + userName + ", ****)");
}
ActiveMQRASessionFactoryImpl s = new ActiveMQRASessionFactoryImpl(mcf, cm, getResourceAdapter().getTM(), ActiveMQRAConnectionFactory.TOPIC_CONNECTION);
s.setUserName(userName);
s.setPassword(password);
validateUser(s);
if (ActiveMQRAConnectionFactoryImpl.trace) {
ActiveMQRALogger.LOGGER.trace("Created topic connection: " + s);
}
return s;
}
项目:class-guard
文件:SingleConnectionFactory.java
/**
* Create a default Session for this ConnectionFactory,
* adaptign to JMS 1.0.2 style queue/topic mode if necessary.
* @param con the JMS Connection to operate on
* @param mode the Session acknowledgement mode
* ({@code Session.TRANSACTED} or one of the common modes)
* @return the newly created Session
* @throws JMSException if thrown by the JMS API
*/
protected Session createSession(Connection con, Integer mode) throws JMSException {
// Determine JMS API arguments...
boolean transacted = (mode == Session.SESSION_TRANSACTED);
int ackMode = (transacted ? Session.AUTO_ACKNOWLEDGE : mode);
// Now actually call the appropriate JMS factory method...
if (Boolean.FALSE.equals(this.pubSubMode) && con instanceof QueueConnection) {
return ((QueueConnection) con).createQueueSession(transacted, ackMode);
}
else if (Boolean.TRUE.equals(this.pubSubMode) && con instanceof TopicConnection) {
return ((TopicConnection) con).createTopicSession(transacted, ackMode);
}
else {
return con.createSession(transacted, ackMode);
}
}
项目:class-guard
文件:JmsTransactionManagerTests.java
@Test
@Deprecated
public void testTransactionCommit102WithTopic() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
final TopicSession session = mock(TopicSession.class);
given(cf.createTopicConnection()).willReturn(con);
given(con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session);
JmsTransactionManager tm = new JmsTransactionManager102(cf, true);
TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
JmsTemplate jt = new JmsTemplate102(cf, true);
jt.execute(new SessionCallback() {
@Override
public Object doInJms(Session sess) {
assertTrue(sess == session);
return null;
}
});
tm.commit(ts);
verify(session).commit();
verify(session).close();
verify(con).close();
}
项目:class-guard
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnection() throws JMSException {
Connection con = mock(TopicConnection.class);
SingleConnectionFactory scf = new SingleConnectionFactory(con);
TopicConnection con1 = scf.createTopicConnection();
con1.start();
con1.stop(); // should be ignored
con1.close(); // should be ignored
TopicConnection con2 = scf.createTopicConnection();
con2.start();
con2.stop(); // should be ignored
con2.close(); // should be ignored
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:class-guard
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnectionFactoryAndJms11Usage() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
given(cf.createConnection()).willReturn(con);
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
Connection con1 = scf.createConnection();
con1.start();
con1.close(); // should be ignored
Connection con2 = scf.createConnection();
con2.start();
con2.close(); // should be ignored
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:class-guard
文件:SingleConnectionFactoryTests.java
@Test
public void testWithTopicConnectionFactoryAndJms102Usage() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
given(cf.createTopicConnection()).willReturn(con);
SingleConnectionFactory scf = new SingleConnectionFactory(cf);
Connection con1 = scf.createTopicConnection();
con1.start();
con1.close(); // should be ignored
Connection con2 = scf.createTopicConnection();
con2.start();
con2.close(); // should be ignored
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}
项目:class-guard
文件:SingleConnectionFactoryTests.java
@Test
public void testConnectionFactory102WithTopic() throws JMSException {
TopicConnectionFactory cf = mock(TopicConnectionFactory.class);
TopicConnection con = mock(TopicConnection.class);
given(cf.createTopicConnection()).willReturn(con);
SingleConnectionFactory scf = new SingleConnectionFactory102(cf, true);
TopicConnection con1 = scf.createTopicConnection();
con1.start();
con1.close(); // should be ignored
TopicConnection con2 = scf.createTopicConnection();
con2.start();
con2.close(); // should be ignored
scf.destroy(); // should trigger actual close
verify(con).start();
verify(con).stop();
verify(con).close();
verifyNoMoreInteractions(con);
}