org.apache.qpid.proton.engine.Receiver类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(156)

本文整理了Java中org.apache.qpid.proton.engine.Receiver类的一些代码示例,展示了Receiver类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Receiver类的具体详情如下:
包路径:org.apache.qpid.proton.engine.Receiver
类名称:Receiver

Receiver介绍

[英]Receiver
[中]接受者

代码示例

代码示例来源:origin: apache/activemq-artemis

@Override
public void onMessage(Delivery delivery) throws ActiveMQAMQPException {
 connection.requireInHandler();
 Receiver receiver = ((Receiver) delivery.getLink());
 if (receiver.current() != delivery) {
   return;
 }
 if (delivery.isAborted()) {
   // Aborting implicitly remotely settles, so advance
   // receiver to the next delivery and settle locally.
   receiver.advance();
   delivery.settle();
   // Replenish the credit if not doing a drain
   if (!receiver.getDrain()) {
    receiver.flow(1);
   }
   return;
 } else if (delivery.isPartial()) {
   return;
 }
 ReadableBuffer data = receiver.recv();
 receiver.advance();
 Transaction tx = null;
 if (delivery.getRemoteState() instanceof TransactionalState) {
   TransactionalState txState = (TransactionalState) delivery.getRemoteState();
   tx = this.sessionSPI.getTransaction(txState.getTxnId(), false);
 }
 final Transaction txUsed = tx;
 actualDelivery(delivery, receiver, data, txUsed);
}

代码示例来源:origin: org.apache.qpid/proton-j-impl

public Receiver create(Session session)
  {
    Receiver receiver = session.receiver(_path);
    Source source = new Source();
    source.setAddress(_path);
    receiver.setSource(source);
    // the C implemenation does this:
    Target target = new Target();
    target.setAddress(_path);
    receiver.setTarget(target);
    if (getIncomingWindow() > 0)
    {
      // use explicit settlement via dispositions (not pre-settled)
      receiver.setSenderSettleMode(SenderSettleMode.UNSETTLED);  // desired
      receiver.setReceiverSettleMode(ReceiverSettleMode.SECOND);
    }
    return receiver;
  }
}

代码示例来源:origin: org.apache.activemq/artemis-proton-plug

public void addReceiver(Receiver receiver) throws Exception {
 try {
   AbstractProtonReceiverContext protonReceiver = new ProtonServerReceiverContext(sessionSPI, connection, this, receiver);
   protonReceiver.initialise();
   receivers.put(receiver, protonReceiver);
   receiver.setContext(protonReceiver);
   receiver.open();
 }
 catch (ActiveMQAMQPException e) {
   receivers.remove(receiver);
   receiver.setTarget(null);
   receiver.setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage()));
   receiver.close();
 }
}

代码示例来源:origin: org.apache.qpid/proton-j

private void topup(Receiver link, int window) {
  int delta = window - link.getCredit();
  link.flow(delta);
}

代码示例来源:origin: Azure/azure-service-bus-java

private void sendFlow(int credits)
{
  if(!this.isBrowsableSession && credits > 0)
  {
    this.receiveLink.flow(credits);
    TRACE_LOGGER.debug("Sent flow to the service. receiverPath:{}, linkname:{}, updated-link-credit:{}, sentCredits:{}",
        this.receivePath, this.receiveLink.getName(), this.receiveLink.getCredit(), credits);
  }        
}

代码示例来源:origin: org.apache.activemq/artemis-proton-plug

public void addTransactionHandler(Coordinator coordinator, Receiver receiver) {
 ProtonTransactionHandler transactionHandler = new ProtonTransactionHandler(sessionSPI);
 receiver.setContext(transactionHandler);
 receiver.open();
 receiver.flow(100);
}

代码示例来源:origin: Azure/azure-iot-sdk-java

Delivery delivery = recv.current();
if (delivery.isReadable() && !delivery.isPartial() && delivery.getLink().getName().equals(RECEIVE_TAG))
  int size = delivery.pending();
  byte[] buffer = new byte[size];
  int read = recv.recv(buffer, 0, buffer.length);
  recv.advance();
  recv.getSession().close();
  recv.getSession().getConnection().close();

代码示例来源:origin: com.ibm.mqlight/mqlight-api

linkReceiver.setSource(source);
  linkReceiver.setTarget(target);
  if (sr.qos == QOS.AT_LEAST_ONCE) {
    linkReceiver.setSenderSettleMode(SenderSettleMode.UNSETTLED);
    linkReceiver.setReceiverSettleMode(ReceiverSettleMode.FIRST);
  } else {
    linkReceiver.setSenderSettleMode(SenderSettleMode.SETTLED);
    linkReceiver.setReceiverSettleMode(ReceiverSettleMode.FIRST);
  linkReceiver.open();
  linkReceiver.flow(sr.initialCredit);
EngineConnection engineConnection = ur.connection;
EngineConnection.SubscriptionData sd = engineConnection.subscriptionData.get(ur.topic.toString());
Target t = (Target)sd.receiver.getTarget();
Source s = (Source)sd.receiver.getSource();
  sd.receiver.close();
} else {
      t.getTimeout().longValue() > 0 ||
      ur.topic.isShared()) {
    sd.receiver.detach();
  } else {
    sd.receiver.close();
 if ((available / subData.settled) <= 1.25 ||
   (subData.unsettled == 0 && subData.settled > 0)) {
  subData.receiver.flow(subData.settled);

代码示例来源:origin: Azure/azure-iot-sdk-java

Delivery delivery = this.receiverLink.current();
if (linkName.equals(this.receiverLinkTag) && (delivery != null) && delivery.isReadable() && !delivery.isPartial())
  int size = delivery.pending();
  byte[] buffer = new byte[size];
  int read = this.receiverLink.recv(buffer, 0, buffer.length);
  this.receiverLink.advance();

代码示例来源:origin: org.apache.activemq/artemis-amqp-protocol

final Receiver receiver;
try {
  receiver = ((Receiver) delivery.getLink());
  if (!delivery.isReadable()) {
   return;
  if (receiver.getCredit() < amqpLowMark) {
   receiver.flow(amqpCredit);
  if (delivery.available() > DECODE_BUFFER.capacity()) {
   buffer = ByteBuffer.allocate(delivery.available());
  } else {
  buffer.limit(receiver.recv(buffer.array(), buffer.arrayOffset(), buffer.capacity()));
  receiver.advance();

代码示例来源:origin: com.microsoft.azure.iot/proton-j-azure-iot

private int pumpIn(String address, Receiver receiver)
  Delivery delivery = receiver.current();
  if (delivery.isReadable() && !delivery.isPartial())
    int size = delivery.pending();
    byte[] buffer = new byte[size];
    int read = receiver.recv( buffer, 0, buffer.length );
    if (read != size) {
      throw new IllegalStateException();
    receiver.advance();
    if (!receiver.getDrain() && _blocked.isEmpty() && _credit > 0)
      if (receiver.getRemoteCredit() < lo_thresh)
        final int more = Math.min(_credit, max - receiver.getRemoteCredit());
        _credit -= more;
        _distributed += more;
        receiver.flow(more);
    if (receiver.getRemoteCredit() == 0 && _credited.contains(receiver))
      if (receiver.getDrain())
        receiver.setDrain(false);
        assert( _draining > 0 );
        _draining--;

代码示例来源:origin: org.apache.activemq/activemq-all

@Override
public void onResponse(AmqpProtocolConverter converter, Response response) throws IOException {
  if (!delivery.remotelySettled()) {
    if (response.isException()) {
      ExceptionResponse error = (ExceptionResponse) response;
      delivery.disposition(rejected);
    } else {
      final DeliveryState remoteState = delivery.getRemoteState();
      if (remoteState != null && remoteState instanceof TransactionalState) {
        TransactionalState txAccepted = new TransactionalState();
  if (getEndpoint().getCredit() + --sendsInFlight <= (getConfiguredReceiverCredit() * .3)) {
    LOG.trace("Sending more credit ({}) to producer: {}", getConfiguredReceiverCredit() * .7, getProducerId());
    getEndpoint().flow((int) (getConfiguredReceiverCredit() * .7));

代码示例来源:origin: com.ibm.mqlight/mqlight-api

SendRequest sr = engineConnection.inProgressOutboundDeliveries.remove(delivery);
Exception exception = null;
if (delivery.getRemoteState() instanceof Rejected) {
  final Rejected rejected = (Rejected) delivery.getRemoteState();
  final ErrorCondition error = rejected.getError();
  if (error == null || error.getDescription() == null) {
    exception = new Exception(error.getDescription());
} else if (delivery.getRemoteState() instanceof Released) {
  exception = new Exception("Message was released");
} else if (delivery.getRemoteState() instanceof Modified) {
int amount = delivery.pending();
byte[] data = new byte[amount];
receiver.recv(data, 0, amount);
receiver.advance();

代码示例来源:origin: apache/activemq-artemis

Delivery incoming = null;
do {
  incoming = getEndpoint().current();
  if (incoming != null) {
   if (incoming.isReadable() && !incoming.isPartial()) {
     LOG.trace("{} has incoming Message(s).", this);
     try {
      throw IOExceptionSupport.create(e);
     getEndpoint().advance();
   } else {
     LOG.trace("{} has a partial incoming Message(s), deferring.", this);
   if (getEndpoint().getRemoteCredit() <= 0) {
     if (stopRequest != null) {
      stopRequest.onSuccess();

代码示例来源:origin: apache/qpid-jms

private boolean processDelivery(Delivery incoming) throws Exception {
  incoming.setDefaultDeliveryState(Released.getInstance());
    message = AmqpCodec.decodeMessage(this, getEndpoint().recv()).asJmsMessage();
  } catch (Exception e) {
    LOG.warn("Error on transform: {}", e.getMessage());
    incoming.disposition(MODIFIED_FAILED_UNDELIVERABLE);
    incoming.settle();
    getEndpoint().advance();

代码示例来源:origin: io.vertx/vertx-proton

@Override
public ProtonReceiver createReceiver(String address, ProtonLinkOptions receiverOptions) {
 Receiver receiver = session.receiver(getOrCreateLinkName(receiverOptions));
 Symbol[] outcomes = new Symbol[] { Accepted.DESCRIPTOR_SYMBOL, Rejected.DESCRIPTOR_SYMBOL,
   Released.DESCRIPTOR_SYMBOL, Modified.DESCRIPTOR_SYMBOL };
 Source source = new Source();
 source.setAddress(address);
 source.setOutcomes(outcomes);
 source.setDefaultOutcome(Released.getInstance());
 if(receiverOptions.isDynamic()) {
  source.setDynamic(true);
 }
 Target target = new Target();
 receiver.setSource(source);
 receiver.setTarget(target);
 ProtonReceiverImpl r = new ProtonReceiverImpl(receiver);
 r.openHandler((result) -> {
  LOG.trace("Receiver open completed");
 });
 r.closeHandler((result) -> {
  if (result.succeeded()) {
   LOG.trace("Receiver closed");
  } else {
   LOG.warn("Receiver closed with error", result.cause());
  }
 });
 // Default to at-least-once
 r.setQoS(ProtonQoS.AT_LEAST_ONCE);
 return r;
}

代码示例来源:origin: Azure/azure-iot-sdk-java

Source source = new Source();
target.setAddress(this.getSenderLinkAddress());
source.setAddress(this.getReceiverLinkAddress());
this.senderLink.setTarget(target);
this.senderLink.setSource(source);
this.receiverLink.setProperties(this.getAmqpProperties());
Source source = new Source();
target.setAddress(this.getSenderLinkAddress());
source.setAddress(this.getReceiverLinkAddress());
this.receiverLink.setTarget(target);
this.receiverLink.setSource(source);
this.receiverLink.open();

代码示例来源:origin: org.apache.activemq/artemis-proton-plug

Receiver receiver;
try {
  receiver = ((Receiver) delivery.getLink());
  if (!delivery.isReadable()) {
   return;
  if (delivery.isPartial()) {
   return;
     readDelivery(receiver, buffer);
     receiver.advance();
     sessionSPI.serverSend(receiver, delivery, address, delivery.getMessageFormat(), buffer);

代码示例来源:origin: org.apache.qpid/proton-hawtdispatch

@Override
protected void processDelivery(Delivery delivery) {
  if( !delivery.isReadable() ) {
    System.out.println("it was not readable!");
    return;
  }
  if( current==null ) {
    current = new ByteArrayOutputStream();
  }
  int count;
  byte data[] = new byte[1024*4];
  while( (count = receiver.recv(data, 0, data.length)) > 0 ) {
    current.write(data, 0, count);
  }
  // Expecting more deliveries..
  if( count == 0 ) {
    return;
  }
  receiver.advance();
  Buffer buffer = current.toBuffer();
  current = null;
  onMessage(delivery, buffer);
}

代码示例来源:origin: org.apache.activemq/artemis-proton-plug

receiver = ((Receiver) delivery.getLink());
if (!delivery.isReadable()) {
 return;
receiver.advance();
 Declared declared = new Declared();
 declared.setTxnId(txID);
 delivery.disposition(declared);
 delivery.settle();

相关文章