-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added support for RabbitMQ Stomp adapter, feature Durable Topic Subsc…
…ription
- Loading branch information
Kai Hackemesser
committed
Jun 21, 2015
1 parent
4152479
commit 189aad9
Showing
2 changed files
with
96 additions
and
16 deletions.
There are no files selected for viewing
50 changes: 50 additions & 0 deletions
50
stompjms-client/src/main/java/org/fusesource/stomp/jms/RabbitMQServerAdaptor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package org.fusesource.stomp.jms; | ||
|
||
import static org.fusesource.stomp.client.Constants.ID; | ||
import static org.fusesource.stomp.client.Constants.PERSISTENT; | ||
import static org.fusesource.stomp.client.Constants.TRUE; | ||
import static org.fusesource.stomp.client.Constants.UNSUBSCRIBE; | ||
|
||
import java.util.Map; | ||
|
||
import javax.jms.JMSException; | ||
|
||
import org.fusesource.hawtbuf.AsciiBuffer; | ||
import org.fusesource.stomp.codec.StompFrame; | ||
|
||
/** | ||
* Stomp adaptor for RabbitMQ | ||
*/ | ||
public class RabbitMQServerAdaptor extends StompServerAdaptor { | ||
|
||
@Override | ||
public boolean matchesServerAndVersion(String server) { | ||
return server.startsWith("RabbitMQ/"); | ||
} | ||
|
||
@Override | ||
public void addSubscribeHeaders(Map<AsciiBuffer, AsciiBuffer> headerMap, boolean persistent, boolean browser, | ||
boolean noLocal, StompJmsPrefetch prefetch) throws JMSException { | ||
if (browser) { | ||
throw new JMSException("Server does not support browsing over STOMP"); | ||
} | ||
if (noLocal) { | ||
throw new JMSException("Server does not support 'no local' semantics over STOMP"); | ||
} | ||
if (persistent) { | ||
headerMap.put(PERSISTENT, TRUE); | ||
} | ||
} | ||
|
||
@Override | ||
public StompFrame createUnsubscribeFrame(AsciiBuffer consumerId, boolean persistent) throws JMSException { | ||
StompFrame frame = new StompFrame(); | ||
Map<AsciiBuffer, AsciiBuffer> headerMap = frame.headerMap(); | ||
frame.action(UNSUBSCRIBE); | ||
headerMap.put(ID, consumerId); | ||
if (persistent) { | ||
headerMap.put(PERSISTENT, TRUE); | ||
} | ||
return frame; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters