Skip to content

Commit

Permalink
JBPAPP-8282 - Fixing remove element case
Browse files Browse the repository at this point in the history
  • Loading branch information
clebertsuconic committed Mar 1, 2012
1 parent fc6966a commit f527277
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 6 deletions.
13 changes: 7 additions & 6 deletions src/main/org/hornetq/core/server/impl/ServerConsumerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -251,19 +251,20 @@ public HandleStatus handle(final MessageReference ref) throws Exception
}
return HandleStatus.BUSY;
}

if (log.isTraceEnabled())
{
log.trace("Handling reference " + ref);
}

final ServerMessage message = ref.getMessage();

if (filter != null && !filter.match(message))
{
log.trace("Reference " + ref + " is a noMatch on consumer " + this);
return HandleStatus.NO_MATCH;
}

if (log.isTraceEnabled())
{
log.trace("Handling reference " + ref);
}


if (!browseOnly)
{
if (!preAcknowledge)
Expand Down
4 changes: 4 additions & 0 deletions src/main/org/hornetq/utils/LinkedListImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ public void addHead(E e)
if (size == 0)
{
tail = node;
}
else
{
tail.prev = node;
}

size++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,86 @@ public void testTwoConsumers() throws Exception

locator.close();
}

public void testLinkedListOrder() throws Exception
{
ServerLocator locator = createInVMNonHALocator();

ClientSessionFactory sf = locator.createSessionFactory();

ClientSession session = sf.createSession();

session.start();

session.createQueue("foo", "foo", true);

ClientProducer producer = session.createProducer("foo");

ClientConsumer redConsumer = session.createConsumer("foo", "color='red'");

ClientConsumer anyConsumer = session.createConsumer("foo");

sendMessage(session, producer, "any", "msg1");

sendMessage(session, producer, "any", "msg2");

sendMessage(session, producer, "any", "msg3");

sendMessage(session, producer, "red", "msgRed4");

sendMessage(session, producer, "red", "msgRed5");

readConsumer("anyConsumer", anyConsumer);

readConsumer("anyConsumer", anyConsumer);

log.info("### closing consumer ###");

anyConsumer.close();

readConsumer("redConsumer", redConsumer);

readConsumer("redConsumer", redConsumer);

log.info("### recreating consumer ###");

anyConsumer = session.createConsumer("foo");

session.start();

readConsumer("anyConsumer", anyConsumer);

session.close();

sf.close();

locator.close();
}

/**
* @param consumer
* @throws HornetQException
*/
private void readConsumer(String consumerName, ClientConsumer consumer) throws Exception
{
ClientMessage message = consumer.receive(5000);
assertNotNull(message);
System.out.println("consumer = " + consumerName + " message, color=" + message.getStringProperty("color") + ", msg = " + message.getStringProperty("value"));
message.acknowledge();
}

/**
* @param session
* @param producer
* @return
* @throws HornetQException
*/
private void sendMessage(ClientSession session, ClientProducer producer, String color, String msg) throws Exception
{
ClientMessage anyMessage = session.createMessage(true);
anyMessage.putStringProperty("color", color);
anyMessage.putStringProperty("value", msg);
producer.send(anyMessage);
session.commit();
}
}

0 comments on commit f527277

Please sign in to comment.