Pour javax.jms en fait c’est bon ça fonctionne bien (j’ai simplement fait un import javax.jms.* pour être sûr d’embarquer toutes les dépendances).
Sinon j’ai échangé avec l’équipe Renault en charge du broker, ils m’ont fourni un code “template” qui utilise : “org.java.qpid.jms.JmsConnectionFactory” mais ça ne fonctionne pas. Apparemment c’est normal, ce package a été déplacé. C’est donc leur code qui n’est pas à jour.
Pour QPID il y a plusieurs générations de libs, cf. le début de nos échanges.
Là j’ai mis la version qui correspondait à votre code, leur code correspond peut être à d’autres versions plus anciennes ou plus récentes…
Franchement, le plus simple c’est qu’ils disent quelles dépendances Maven/Graddle exactes ils utilisent/préconisent, on perdra moins de temps à essayer de les deviner !
J’ai enfin eu le temps de faire quelques tests, il semblerai qu’il faille ajouter la dépendance QpidJMS Client comment nous l’avions discuté au départ.
J’ai testé avec la dernière version de cette lib dans un environnement Eclipse et ça fonctionne.
OK, comme demandé 3 fois précédemment, je voudrais avoir la liste des dependances que vous utilisez afin de ne pas perdre une 2ème du temps à intégrer une librairie qui n’est pas celle dont vous avez besoin (je rappelle tout de même que ce qu’on a intégré correspondait au code que vous aviez fourni à titre d’exemple, j’imagine donc que cet exemple n’était pas le bon…)
Java est un monde complexe où tout librairie dépend d’une grappe d’autres libs. On ne peut pas juste dire je veux la lib “toto”, il faut indiquer la liste minimale des dépendances requises par cette lib “toto”.
Cela permet de s’assurer de ne rien oublier et surtout de vérifier qu’il n’y a pas d’incompatibilité avec les nombreuses libs déjà embarquées dans Simplicité.
Copiez collez aussi le code que vous utilisez histoire d’avoir un exemple pour tester
import java.io.IOException;
import java.util.UUID;
import javax.jms.BytesMessage;
import javax.jms.Destination;
import javax.jms.JMSContext;
import javax.jms.JMSException;
import javax.jms.JMSProducer;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.json.JSONException;
public class App {
private static final String URL = "amqps://localhost:5671";
private static final String USERNAME = "default";
private static final String PASSWORD = "default";
private static final String TOPIC = "test/mytopic";
private static final DeliveryMode DELIVERY_MODE = DeliveryMode.NON_PERSISTENT;
private static final int MESSAGES_NUMBER = 10;
private static final String MESSAGE_CONTENT = "{key: value}";
private static final int QOS = 0;
private static final String CLIENT_ID = App.class.getName() + "-" + UUID.randomUUID().toString();
public static void main(String[] args) {
JmsConnectionFactory connectionFactory = null;
try {
connectionFactory = new JmsConnectionFactory(USERNAME, PASSWORD, URL);
} catch (Exception e ) {
System.out.println("Error with the connection");
return;
}
connectionFactory.setClientID(CLIENT_ID);
try (JMSContext jmsContext = connectionFactory.createContext()) {
JMSProducer producer = jmsContext.createProducer().setDeliveryMode(DELIVERY_MODE.getValue());
Destination destination = jmsContext.createTopic(TOPIC);
BytesMessage message = jmsContext.createBytesMessage();
message.writeBytes(MESSAGE_CONTENT.getBytes());
for (int i = 0; i < MESSAGES_NUMBER; i++) {
producer.send(destination, message);
}
System.out.println("Sent " + MESSAGES_NUMBER + " messages");
} catch (Exception e) {
System.out.println("Error sending");
return;
}
}
public enum DeliveryMode {
NON_PERSISTENT(1),
PERSISTENT(2);
int value;
DeliveryMode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
}
J’avoue avoir du mal à comprendre les difficultés qu’il y a à intégrer une librairie, maven est justement là pour ça…
Voici ce qu’il faut ajouter au pom.xml pour que ça fonctionne :
Il n’y a pas de difficulté mais un besoin de s’assurer de la compatibilité des dépendances avec les autres dépendances de Simplicité, de faire des tests de non régression, de faire du packaging et du delivery de la plateforme. Au final c’est une charge de travail relativement importante, donc on a besoin de d’être sûr que ce qu’on intègre correspond bien à ce dont vous avez besoin.
Merci donc de me fournir le fichierpom.xml complet de votre test histoire que je m’assure qu’il n’y a pas d’autres choses.