Java Examples for org.apache.activemq.advisory.AdvisorySupport

The following java examples will help you to understand the usage of org.apache.activemq.advisory.AdvisorySupport. These source code samples are taken from different open source projects.

Example 1
Project: activemq-in-action-master  File: Advisory.java View source code
public static void main(String[] args) throws Exception {
    Advisory advisory = new Advisory();
    Session session = advisory.getSession();
    for (String stock : args) {
        ActiveMQDestination destination = (ActiveMQDestination) session.createTopic("STOCKS." + stock);
        Destination consumerTopic = AdvisorySupport.getConsumerAdvisoryTopic(destination);
        System.out.println("Subscribing to advisory " + consumerTopic);
        MessageConsumer consumerAdvisory = session.createConsumer(consumerTopic);
        consumerAdvisory.setMessageListener(new ConsumerAdvisoryListener());
        Destination noConsumerTopic = AdvisorySupport.getNoTopicConsumersAdvisoryTopic(destination);
        System.out.println("Subscribing to advisory " + noConsumerTopic);
        MessageConsumer noConsumerAdvisory = session.createConsumer(noConsumerTopic);
        noConsumerAdvisory.setMessageListener(new NoConsumerAdvisoryListener());
    }
}
Example 2
Project: activemq-master  File: TransportConnection.java View source code
@Override
public Response processAddProducer(ProducerInfo info) throws Exception {
    SessionId sessionId = info.getProducerId().getParentId();
    ConnectionId connectionId = sessionId.getParentId();
    TransportConnectionState cs = lookupConnectionState(connectionId);
    if (cs == null) {
        throw new IllegalStateException("Cannot add a producer to a connection that had not been registered: " + connectionId);
    }
    SessionState ss = cs.getSessionState(sessionId);
    if (ss == null) {
        throw new IllegalStateException("Cannot add a producer to a session that had not been registered: " + sessionId);
    }
    // Avoid replaying dup commands
    if (!ss.getProducerIds().contains(info.getProducerId())) {
        ActiveMQDestination destination = info.getDestination();
        // call it from here with a null Destination value.
        if (!AdvisorySupport.isAdvisoryTopic(destination)) {
            if (getProducerCount(connectionId) >= connector.getMaximumProducersAllowedPerConnection()) {
                throw new IllegalStateException("Can't add producer on connection " + connectionId + ": at maximum limit: " + connector.getMaximumProducersAllowedPerConnection());
            }
        }
        broker.addProducer(cs.getContext(), info);
        try {
            ss.addProducer(info);
        } catch (IllegalStateException e) {
            broker.removeProducer(cs.getContext(), info);
        }
    }
    return null;
}
Example 3
Project: ActiveMQ-HowTo-master  File: AdvisoryConsumerApp.java View source code
public void before() throws Exception {
    connectionFactory = new ActiveMQConnectionFactory(connectionUri);
    connection = connectionFactory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    monitored = session.createQueue("MyQueue");
    destination = session.createTopic(AdvisorySupport.getConsumerAdvisoryTopic(monitored).getPhysicalName() + "," + AdvisorySupport.getProducerAdvisoryTopic(monitored).getPhysicalName());
    advisoryConsumer = session.createConsumer(destination);
    advisoryConsumer.setMessageListener(this);
    connection.start();
}
Example 4
Project: apachecon-master  File: ZonesBroker.java View source code
@Override
public Destination addDestination(ConnectionContext context, ActiveMQDestination destination, boolean createIfTemporary) throws Exception {
    if (!AdvisorySupport.isAdvisoryTopic(destination) && zoner.getManager().getZoneId(destination) == null) {
        String pn = zoner.getManager().zoneDestination(context, destination);
        LOG.debug("Zoning destination '{}' to '{}'", destination.getPhysicalName(), pn);
        destination.setPhysicalName(pn);
    }
    return super.addDestination(context, destination, createIfTemporary);
}
Example 5
Project: activemq-artemis-master  File: OpenWireConnection.java View source code
public void addDestination(DestinationInfo info) throws Exception {
    ActiveMQDestination dest = info.getDestination();
    if (dest.isQueue()) {
        SimpleString qName = new SimpleString(dest.getPhysicalName());
        QueueBinding binding = (QueueBinding) server.getPostOffice().getBinding(qName);
        if (binding == null) {
            if (dest.isTemporary()) {
                internalSession.createQueue(qName, qName, RoutingType.ANYCAST, null, dest.isTemporary(), false);
            } else {
                ConnectionInfo connInfo = getState().getInfo();
                CheckType checkType = dest.isTemporary() ? CheckType.CREATE_NON_DURABLE_QUEUE : CheckType.CREATE_DURABLE_QUEUE;
                server.getSecurityStore().check(qName, checkType, this);
                server.checkQueueCreationLimit(getUsername());
                server.createQueue(qName, RoutingType.ANYCAST, qName, connInfo == null ? null : SimpleString.toSimpleString(connInfo.getUserName()), null, true, false);
            }
        }
    }
    if (dest.isTemporary()) {
        //Openwire needs to store the DestinationInfo in order to send
        //Advisory messages to clients
        this.state.addTempDestination(info);
    }
    if (!AdvisorySupport.isAdvisoryTopic(dest)) {
        AMQConnectionContext context = getContext();
        DestinationInfo advInfo = new DestinationInfo(context.getConnectionId(), DestinationInfo.ADD_OPERATION_TYPE, dest);
        ActiveMQTopic topic = AdvisorySupport.getDestinationAdvisoryTopic(dest);
        protocolManager.fireAdvisory(context, topic, advInfo);
    }
}