2

I am trying to make an android app to talk to azure service bus using proton-j library

When I try to add proton-j-0.11.1 jar file as library on my android project. Try to send to azure service bus but end up with an exception Broken EPIPe broken:

01-15 19:37:02.165: E/proton.messenger(822): Error processing connection
01-15 19:37:02.165: E/proton.messenger(822): java.net.SocketException: sendto failed: EPIPE (Broken pipe)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.IoBridge.sendto(IoBridge.java:489)
01-15 19:37:02.165: E/proton.messenger(822):    at java.nio.SocketChannelImpl.writeImpl(SocketChannelImpl.java:378)
01-15 19:37:02.165: E/proton.messenger(822):    at java.nio.SocketChannelImpl.write(SocketChannelImpl.java:336)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.driver.impl.ConnectorImpl.write(ConnectorImpl.java:168)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.driver.impl.ConnectorImpl.process(ConnectorImpl.java:101)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.messenger.impl.MessengerImpl.processActive(MessengerImpl.java:738)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.messenger.impl.MessengerImpl.waitUntil(MessengerImpl.java:895)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.messenger.impl.MessengerImpl.waitUntil(MessengerImpl.java:844)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.messenger.impl.MessengerImpl.send(MessengerImpl.java:417)
01-15 19:37:02.165: E/proton.messenger(822):    at org.apache.qpid.proton.messenger.impl.MessengerImpl.send(MessengerImpl.java:394)
01-15 19:37:02.165: E/proton.messenger(822):    at com.example.qpidprotonj.MainActivity$1$1.run(MainActivity.java:80)
01-15 19:37:02.165: E/proton.messenger(822):    at java.lang.Thread.run(Thread.java:856)
01-15 19:37:02.165: E/proton.messenger(822): Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.Posix.sendtoBytes(Native Method)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.Posix.sendto(Posix.java:146)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:169)
01-15 19:37:02.165: E/proton.messenger(822):    at libcore.io.IoBridge.sendto(IoBridge.java:487)
01-15 19:37:02.165: E/proton.messenger(822):    ... 11 more
01-15 19:37:02.165: E/proton.messenger(822): Timeout when waiting for condition org.apache.qpid.proton.messenger.impl.MessengerImpl$SentSettled@40d08550 after 3000 ms

My code is here:

if (messenger.stopped())
        messenger.start();

Log.d(tag, "Create message");
Message message = Message.Factory.create();

Log.d(tag, "Setting address");
message.setAddress("amqps://<key_name>:<key_value>@tttesting.servicebus.windows.net/topic1");

Log.d(tag, "Setting subject");
message.setSubject("sujet 1");

Log.d(tag, "Setting AMQP body");
message.setBody(new AmqpValue(editText.getText().toString()));

Log.d(tag, "Put message");
messenger.put(message);

final Tracker tracker = messenger.outgoingTracker();

Log.d(tag, "Sending >>>>>>");
messenger.send();
tourili
  • 141
  • 1
  • 8
  • [According to this](https://azure.microsoft.com/en-us/documentation/articles/service-bus-amqp-overview/), as of 10/5/2015, the tested java clients are **Apache Qpid Java Message Service (JMS) client** and **IIT Software SwiftMQ Java client**. Any reason why you're using proton-j instead? – RaGe Jan 19 '16 at 02:25
  • Thanks for comment @RaGe. Those 2 clients cannot be implemented neither on android platform, since they rely on some javax.* apis that doesn't exists Unfortunately on android dalvik (art neither). With proton-j at least I could come to this point (see the post), and proton is really nice to work with for amqp-1.0, but no api binding for android platform from what I understand – tourili Jan 19 '16 at 15:13
  • Try this: https://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-queues/ The example still uses `javax.xml.datatype` but that seems to be available on android http://developer.android.com/reference/javax/xml/datatype/package-summary.html Not sure how complete that implementation is though. – RaGe Jan 19 '16 at 15:40
  • I went through that a long time ago. It uses azure SDK for java that uses required libraries that depend on javax apis again. I would love to use the azure-sdk as it is since my cloud service bus is on azure. In addition, that works perfect on JVM but not on android :-( – tourili Jan 19 '16 at 16:04
  • @tourili any progress on this...? – sirvon Feb 15 '16 at 01:54

0 Answers0