package io.vertx.ext.amqp.impl.protocol;
import io.vertx.core.Vertx;
import io.vertx.core.net.NetClient;
import io.vertx.core.net.NetClientOptions;
import io.vertx.ext.amqp.MessageFormatException;
import io.vertx.ext.amqp.MessagingException;
import io.vertx.ext.amqp.ReliabilityMode;
import io.vertx.ext.amqp.impl.util.LogManager;
public class MySender extends AbstractAmqpEventListener
{
private static final LogManager LOG = LogManager.get("MySender:", MySender.class);
private OutgoingLinkImpl link;
private ManagedConnection connection;
public MySender(String host, int port, String destination) throws MessagingException
{
NetClient netClient = Vertx.factory.vertx().createNetClient(new NetClientOptions());
DefaultConnectionSettings settings = new DefaultConnectionSettings();
settings.setHost(host);
settings.setPort(port);
connection = new ManagedConnection(settings, this, false);
netClient.connect(settings.getPort(), settings.getHost(), result -> {
if (result.succeeded())
{
connection.setNetSocket(result.result());
connection.write();
connection.addDisconnectHandler(c -> {
LOG.warn("Connection lost to peer at %s:%s", connection.getSettings().getHost(), connection
.getSettings().getPort());
});
LOG.info("Connected to AMQP peer at %s:%s", connection.getSettings().getHost(), connection
.getSettings().getPort());
}
else
{
LOG.warn("Error {%s}, when connecting to AMQP peer at %s:%s", result.cause(), connection.getSettings()
.getHost(), connection.getSettings().getPort());
}
});
link = connection.createOutboundLink(destination, ReliabilityMode.AT_LEAST_ONCE);
}
public TrackerImpl send(AmqpMessage msg) throws MessageFormatException, MessagingException
{
return link.send(msg);
}
public static void main(String[] args) throws Exception
{
MySender sender = new MySender("localhost", 6672, "mydest");
AmqpMessage msg = new AmqpMessageImpl();
msg.setContent("hello-world");
TrackerImpl t = sender.send(msg);
t.awaitSettlement();
System.out.println("Delivery state : " + t.getState());
}
}