当前位置: 首页>>代码示例>>Java>>正文


Java ConnectionContext.setProducerFlowControl方法代码示例

本文整理汇总了Java中org.apache.activemq.broker.ConnectionContext.setProducerFlowControl方法的典型用法代码示例。如果您正苦于以下问题:Java ConnectionContext.setProducerFlowControl方法的具体用法?Java ConnectionContext.setProducerFlowControl怎么用?Java ConnectionContext.setProducerFlowControl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.activemq.broker.ConnectionContext的用法示例。


在下文中一共展示了ConnectionContext.setProducerFlowControl方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: sendStats

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
protected void sendStats(ConnectionContext context, ActiveMQMapMessage msg, ActiveMQDestination replyTo)
        throws Exception {
    msg.setPersistent(false);
    msg.setType(AdvisorySupport.ADIVSORY_MESSAGE_TYPE);
    msg.setMessageId(new MessageId(this.advisoryProducerId, this.messageIdGenerator.getNextSequenceId()));
    msg.setDestination(replyTo);
    msg.setResponseRequired(false);
    msg.setProducerId(this.advisoryProducerId);
    boolean originalFlowControl = context.isProducerFlowControl();
    final ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
    producerExchange.setConnectionContext(context);
    producerExchange.setMutable(true);
    producerExchange.setProducerState(new ProducerState(new ProducerInfo()));
    try {
        context.setProducerFlowControl(false);
        this.next.send(producerExchange, msg);
    } finally {
        context.setProducerFlowControl(originalFlowControl);
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:21,代码来源:StatisticsBroker.java

示例2: doResend

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
public static void doResend(final ConnectionContext context, Message originalMessage, ActiveMQDestination deadLetterDestination, boolean copy) throws Exception {       
    Message message = copy ? originalMessage.copy() : originalMessage;
    message.setOriginalDestination(message.getDestination());
    message.setOriginalTransactionId(message.getTransactionId());
    message.setDestination(deadLetterDestination);
    message.setTransactionId(null);
    message.setMemoryUsage(null);
    message.setRedeliveryCounter(0);
    boolean originalFlowControl = context.isProducerFlowControl();
    try {
        context.setProducerFlowControl(false);
        ProducerInfo info = new ProducerInfo();
        ProducerState state = new ProducerState(info);
        ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
        producerExchange.setProducerState(state);
        producerExchange.setMutable(true);
        producerExchange.setConnectionContext(context);
        context.getBroker().send(producerExchange, message);
    } finally {
        context.setProducerFlowControl(originalFlowControl);
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:23,代码来源:BrokerSupport.java

示例3: fireAdvisory

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
public void fireAdvisory(ConnectionContext context, ActiveMQTopic topic, Command command, ConsumerId targetConsumerId, ActiveMQMessage advisoryMessage) throws Exception {
    if (getBrokerService().isStarted()) {
        //set properties
        advisoryMessage.setStringProperty(AdvisorySupport.MSG_PROPERTY_ORIGIN_BROKER_NAME, getBrokerName());
        String id = getBrokerId() != null ? getBrokerId().getValue() : "NOT_SET";
        advisoryMessage.setStringProperty(AdvisorySupport.MSG_PROPERTY_ORIGIN_BROKER_ID, id);

        String url = getBrokerService().getVmConnectorURI().toString();
        if (getBrokerService().getDefaultSocketURIString() != null) {
            url = getBrokerService().getDefaultSocketURIString();
        }
        advisoryMessage.setStringProperty(AdvisorySupport.MSG_PROPERTY_ORIGIN_BROKER_URL, url);

        //set the data structure
        advisoryMessage.setDataStructure(command);
        advisoryMessage.setPersistent(false);
        advisoryMessage.setType(AdvisorySupport.ADIVSORY_MESSAGE_TYPE);
        advisoryMessage.setMessageId(new MessageId(advisoryProducerId, messageIdGenerator.getNextSequenceId()));
        advisoryMessage.setTargetConsumerId(targetConsumerId);
        advisoryMessage.setDestination(topic);
        advisoryMessage.setResponseRequired(false);
        advisoryMessage.setProducerId(advisoryProducerId);
        boolean originalFlowControl = context.isProducerFlowControl();
        final ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
        producerExchange.setConnectionContext(context);
        producerExchange.setMutable(true);
        producerExchange.setProducerState(new ProducerState(new ProducerInfo()));
        try {
            context.setProducerFlowControl(false);
            next.send(producerExchange, advisoryMessage);
        } finally {
            context.setProducerFlowControl(originalFlowControl);
        }
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:36,代码来源:AdvisoryBroker.java

示例4: sendScheduledJob

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
protected void sendScheduledJob(ConnectionContext context, Job job, ActiveMQDestination replyTo) throws Exception {

        org.apache.activemq.util.ByteSequence packet = new org.apache.activemq.util.ByteSequence(job.getPayload());
        try {
            Message msg = (Message) this.wireFormat.unmarshal(packet);
            msg.setOriginalTransactionId(null);
            msg.setPersistent(false);
            msg.setType(AdvisorySupport.ADIVSORY_MESSAGE_TYPE);
            msg.setMessageId(new MessageId(this.producerId, this.messageIdGenerator.getNextSequenceId()));
            msg.setDestination(replyTo);
            msg.setResponseRequired(false);
            msg.setProducerId(this.producerId);

            // Add the jobId as a property
            msg.setProperty("scheduledJobId", job.getJobId());

            final boolean originalFlowControl = context.isProducerFlowControl();
            final ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
            producerExchange.setConnectionContext(context);
            producerExchange.setMutable(true);
            producerExchange.setProducerState(new ProducerState(new ProducerInfo()));
            try {
                context.setProducerFlowControl(false);
                this.next.send(producerExchange, msg);
            } finally {
                context.setProducerFlowControl(originalFlowControl);
            }
        } catch (Exception e) {
            LOG.error("Failed to send scheduled message {}", job.getJobId(), e);
        }
    }
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:32,代码来源:SchedulerBroker.java

示例5: scheduleRedelivery

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
private void scheduleRedelivery(ConnectionContext context, MessageReference messageReference, long delay, int redeliveryCount) throws Exception {
    if (LOG.isTraceEnabled()) {
        Destination regionDestination = (Destination) messageReference.getRegionDestination();
        LOG.trace("redelivery #{} of: {} with delay: {}, dest: {}", new Object[]{
                redeliveryCount, messageReference.getMessageId(), delay, regionDestination.getActiveMQDestination()
        });
    }
    final Message old = messageReference.getMessage();
    Message message = old.copy();

    message.setTransactionId(null);
    message.setMemoryUsage(null);
    message.setMarshalledProperties(null);
    message.removeProperty(ScheduledMessage.AMQ_SCHEDULED_ID);

    message.setProperty(REDELIVERY_DELAY, delay);
    message.setProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
    message.setRedeliveryCounter(redeliveryCount);

    boolean originalFlowControl = context.isProducerFlowControl();
    try {
        context.setProducerFlowControl(false);
        ProducerInfo info = new ProducerInfo();
        ProducerState state = new ProducerState(info);
        ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
        producerExchange.setProducerState(state);
        producerExchange.setMutable(true);
        producerExchange.setConnectionContext(context);
        context.getBroker().send(producerExchange, message);
    } finally {
        context.setProducerFlowControl(originalFlowControl);
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:34,代码来源:RedeliveryPlugin.java

示例6: onMessageWithNoConsumers

import org.apache.activemq.broker.ConnectionContext; //导入方法依赖的package包/类
/**
 * Provides a hook to allow messages with no consumer to be processed in
 * some way - such as to send to a dead letter queue or something..
 */
protected void onMessageWithNoConsumers(ConnectionContext context, Message msg) throws Exception {
    if (!msg.isPersistent()) {
        if (isSendAdvisoryIfNoConsumers()) {
            // allow messages with no consumers to be dispatched to a dead
            // letter queue
            if (destination.isQueue() || !AdvisorySupport.isAdvisoryTopic(destination)) {

                Message message = msg.copy();
                // The original destination and transaction id do not get
                // filled when the message is first sent,
                // it is only populated if the message is routed to another
                // destination like the DLQ
                if (message.getOriginalDestination() != null) {
                    message.setOriginalDestination(message.getDestination());
                }
                if (message.getOriginalTransactionId() != null) {
                    message.setOriginalTransactionId(message.getTransactionId());
                }

                ActiveMQTopic advisoryTopic;
                if (destination.isQueue()) {
                    advisoryTopic = AdvisorySupport.getNoQueueConsumersAdvisoryTopic(destination);
                } else {
                    advisoryTopic = AdvisorySupport.getNoTopicConsumersAdvisoryTopic(destination);
                }
                message.setDestination(advisoryTopic);
                message.setTransactionId(null);

                // Disable flow control for this since since we don't want
                // to block.
                boolean originalFlowControl = context.isProducerFlowControl();
                try {
                    context.setProducerFlowControl(false);
                    ProducerBrokerExchange producerExchange = new ProducerBrokerExchange();
                    producerExchange.setMutable(false);
                    producerExchange.setConnectionContext(context);
                    producerExchange.setProducerState(new ProducerState(new ProducerInfo()));
                    context.getBroker().send(producerExchange, message);
                } finally {
                    context.setProducerFlowControl(originalFlowControl);
                }

            }
        }
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:51,代码来源:BaseDestination.java


注:本文中的org.apache.activemq.broker.ConnectionContext.setProducerFlowControl方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。