[
https://issues.apache.org/jira/browse/ARTEMIS-2719?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Praveen updated ARTEMIS-2719:
-----------------------------
Attachment: JiraIssue.txt
> Closing TopicConnection is removing the Topic
> ---------------------------------------------
>
> Key: ARTEMIS-2719
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2719
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.8.1
> Reporter: Praveen
> Priority: Critical
> Attachments: JiraIssue.txt
>
>
> Short Summary:
> In Wildlfy17 which has ActiveMQ artemis 2.8.1, when I connect
> to the topic and disconnect, it is removing the Topic.
> Details:
> standalone.xml has the below configuration;
> <subsystem xmlns="urn:jboss:domain:messaging-activemq:7.0">
> <server name="default">
> <journal type="ASYNCIO" file-size="102400" min-files="2"/>
> <shared-store-master/>
> <security-setting name="#">
> <role name="User" send="true" consume="true" create-non-durable-queue="true"
> delete-non-durable-queue="true"/>
> </security-setting>
> <address-setting name="#" dead-letter-address="jms.queue.DLQ"
> expiry-address="jms.queue.ExpiryQueue" redelivery-delay="0"
> max-size-bytes="10485760" page-size-bytes="5485760"
> address-full-policy="PAGE" message-counter-history-day-limit="10"
> redistribution-delay="0"/>
> <remote-connector name="netty" socket-binding="messaging"/>
> <remote-connector name="netty-throughput"
> socket-binding="messaging-throughput">
> <param name="batch-delay" value="50"/>
> </remote-connector>
> <in-vm-connector name="in-vm" server-id="0"/>
> <remote-acceptor name="netty" socket-binding="messaging"/>
> <remote-acceptor name="netty-throughput"
> socket-binding="messaging-throughput">
> <param name="batch-delay" value="50"/>
> <param name="direct-deliver" value="false"/>
> </remote-acceptor>
> <in-vm-acceptor name="in-vm" server-id="0"/>
> <jms-topic name="LCSTopic" entries="LCSTopic topic/LCSTopic
> java:jboss/exported/jms/topic/LCSTopic"/>
> <connection-factory name="InVmConnectionFactory"
> entries="java:/ConnectionFactory" connectors="in-vm"/>
> <connection-factory name="RemoteConnectionFactory"
> entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="netty"
> ha="true" client-failure-check-period="10" retry-interval="1000"
> reconnect-attempts="10" failover-on-initial-connection="true"
> use-global-pools="false" thread-pool-max-size="100"/>
> <pooled-connection-factory name="activemq" entries="java:/JmsXA"
> connectors="in-vm" block-on-non-durable-send="false"
> block-on-durable-send="false" transaction="xa" min-pool-size="2"
> use-auto-recovery="false" max-pool-size="100"/>
> </server>
> </subsystem>
>
> The program that is deleting the Topic:
> public class JMSTest { Logger log = Logger.getLogger(JMSTest.class);
> private TopicConnection mTopicConnection;
> public static void main(String[] args) \{ JMSTest test = new JMSTest(); if
> (args.length == 1) { try { test.doTest(args[0]); } catch (Exception e) \{
> e.printStackTrace(); } } else \{ System.out.println("JMSTest FQDN:port");
> System.out.println(" test out JMS queue persistance on given EDMServer");
> System.err.println(" Plese provide a FSDN:port of the EDMServer"); } }
> private void doTest(String hostName) throws Exception { log.debug("Starting
> doTest, get new LoginData");
> Connector connector = null; try { Login login = new Login();
> log.debug("--> start Login.doBatchLogin"); connector =
> login.doBatchLogin(org.apache.log4j.Logger.getLogger(JMSTest.class), "admin",
> "admin".toCharArray(), hostName, "JMSTest",
> (SessionEndedHandler)null);
> initNotificationListener("Client_"+(new Random().nextInt()));
> removeNotificationConsumer(); } catch (Exception e) \{ log.error("Could not
> authenticate: Exception: " + e.getClass().getName() + ", " + e.getMessage());
> } finally \{ connector.logout(); } }
> private void initNotificationListener(String clientId) throws Exception {
> try { Connector connector = Connector.getInstance(); mTopicConnection =
> connector.createTopicConnection(); mTopicConnection.setExceptionListener(new
> JMSExceptionListener()); TopicSession topicSession =
> mTopicConnection.createTopicSession(false, QueueSession.AUTO_ACKNOWLEDGE);
> mTopicConnection.start();
> Topic lcsTopic = connector.createTopic("LCSTopic");
> topicSession.createConsumer(lcsTopic, "JMSCorrelationID = '" + clientId +
> "'"); } catch (Exception e) \{ System.err.println("Internal error: " +
> e.getMessage()); e.printStackTrace(); try { if (mTopicConnection != null) {
> mTopicConnection.close(); } } catch (JMSException e1) \{
> System.err.println("Topic close error: "+ e1.getMessage());
> e.printStackTrace(); }
> throw new Exception(e.getMessage(), e); } }
> public void removeNotificationConsumer() {
> if (mTopicConnection != null) {
> try \{ mTopicConnection.close(); mTopicConnection = null; } catch
> (JMSException e) \{ System.err.println("Internal error: " + e.getMessage());
> e.printStackTrace(); } }
> } public class JMSExceptionListener implements ExceptionListener {
> @Override public void onException(JMSException e) \{
> System.err.println("Internal error: " + e.getMessage());
> e.printStackTrace(); } } }
> This line is removing the topic:
> mTopicConnection.close();
> If you go to Management HTTP in Wildfly, you will see errors.
> After successfully createTopic and disconnection, topics created in
> standalone.xml stops became permanent topics and are removed from server
> which causes printing errors in Wildfly's server.log.
> 2020-04-10 10:02:34,220 ERROR [org.jboss.as.controller.management-operation]
> (management-handler-thread - 2) WFLYCTL0013: Operation ("read-attribute")
> failed - address: ([
> ("subsystem" => "messaging-activemq"),
> ("server" => "default"),
> ("jms-topic" => " LCSTopic")
> ]) - failure description: "WFLYCTL0216: Management resource '[
> (\"subsystem\" => \"messaging-activemq\"),
> (\"server\" => \"default\"),
> (\"jms-topic\" => \"LCSTopic\")
> ]' not found"
--
This message was sent by Atlassian Jira
(v8.3.4#803005)