Ich verwende Java mit ActiveMQ zum Senden von Nachrichten von Embedded-Linux. Meine Anforderungen sind, dass Nachrichten beibehalten werden sollten, wenn der Zielbroker nicht verfügbar ist. Ich habe KahaDB als Persistenzadapter gewählt, damit die Nachrichten den Neustart eines Brokers überleben.ActiveMQ persistieren nur bei Bedarf auf Platte
broker = new SslBrokerService();
KahaDBPersistenceAdapter kahaDBPersistenceAdapter=new KahaDBPersistenceAdapter();
kahaDBPersistenceAdapter.setJournalMaxFileLength(16 * 1024 * 1024);
broker.setPersistenceAdapter(kahaDBPersistenceAdapter);
/** Connector setup code */
broker.start();
Auch wenn ich die maximale Dateigröße auf 16 MB beschränkt haben würde Ich mag auf NUR Nachrichten anhalten, wenn die Ziel Broker/Verbraucher nicht zur Verfügung steht. Der Grund dafür ist, die CPU- und Festplattennutzung zu begrenzen. Beispiel: Nachricht 1 erstellen, Nachricht senden. Wenn eine erfolgreiche Persistenz nicht stattfinden sollte, da ich nicht daran interessiert bin, bereits gesendete Daten erneut zu senden (oder nur im Speicher auftreten sollte). Produce Nachrichten 2,3,4 aber Ziel Broker ist nicht verfügbar, dann bestehen Nachrichten auf der Festplatte so, dass in der unwahrscheinlichen Stilllegung von Borker Nachrichten überleben.
Nachdem ich durch die Dokumentation von ActiveMQ hin und her gegangen bin, habe ich keine Antwort für meinen Anwendungsfall gefunden, also frage ich diese großartige Gemeinschaft, ob das, was ich suche, wirklich möglich ist.
Ich verwende einen Netzwerk-Connector bereits mit einem eingebetteten Broker. Ich dachte mir aber, dass ich einen eigenen Adapter für meinen Anwendungsfall bauen müsste. Danke für den Vorschlag – rpirsc13