本文整理了Java中org.apache.qpid.proton.engine.Receiver
类的一些代码示例,展示了Receiver
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Receiver
类的具体详情如下:
包路径:org.apache.qpid.proton.engine.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();
内容来源于网络,如有侵权,请联系作者删除!