Skip to content

Commit b679247

Browse files
Merge pull request #1157 from ISISComputingGroup/Ticket5561_fix_ioc_log
Fix log issue by restarting correctly
2 parents d701bd5 + e617cfd commit b679247

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

base/uk.ac.stfc.isis.ibex.activemq/src/uk/ac/stfc/isis/ibex/activemq/ReceiveSession.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ private void addConsumer(String dest, MessageParser parser) {
166166
protected void addConsumer(Destination dest, MessageParser parser) throws JMSException {
167167
MessageConsumer consumer = session.createConsumer(dest);
168168
parser.setActiveMQConsumer(consumer);
169+
parser.setRunning(true);
169170
}
170171

171172
/**

base/uk.ac.stfc.isis.ibex.activemq/src/uk/ac/stfc/isis/ibex/activemq/message/MessageParser.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,12 @@ public abstract class MessageParser<T extends IMessage> implements Runnable {
3939

4040
private static final int TIMEOUT_50_MS = 50;
4141
private boolean running = true;
42-
private Thread thread;
42+
private Thread thread = null;
4343

4444
private List<IMessageConsumer<T>> convertedConsumers = new ArrayList<>();
4545

4646
/** Receives messages from the JMS server */
4747
private MessageConsumer jmsConsumer;
48-
49-
/**
50-
* Default constructor, will start a thread listening for active MQ
51-
* messages.
52-
*/
53-
public MessageParser() {
54-
thread = new Thread(this);
55-
thread.start();
56-
}
5748

5849
/**
5950
* Start and stop the thread.
@@ -66,6 +57,10 @@ public void setRunning(boolean run) {
6657
throw new IllegalStateException("Cannot start running without a consumer");
6758
}
6859
running = run;
60+
if(running && (thread == null || !thread.isAlive())) {
61+
thread = new Thread(this);
62+
thread.start();
63+
}
6964
}
7065

7166
/**
@@ -85,6 +80,7 @@ public void setActiveMQConsumer(MessageConsumer consumer) {
8580
* Thrown if close fails.
8681
*/
8782
public void closeJMSConsumer() throws JMSException {
83+
setRunning(false);
8884
jmsConsumer.close();
8985

9086
/**
@@ -100,7 +96,6 @@ public void closeJMSConsumer() throws JMSException {
10096
*
10197
*/
10298
jmsConsumer = null;
103-
setRunning(false);
10499
}
105100

106101
/**

0 commit comments

Comments
 (0)