Geçenlerde bağlantıları, oturumları, tüketiciler etrafında JMS, Bahar (ve TIBCO EMS) ile ilgili en iyi uygulamalar çok şey okudum & üreticileri Çoklu yapım oturumlarıyla tek bir JMS bağlantısı ne zaman bir darboğaz olmaya başlar?
Bahar dünyası içinde çalışan, hakim olan görüş olarak görünmektedir-
Tüketen/giren akışlar için
- - Bir çok tüketici/iplik ile
AbstractMessageListenerContainer
kullanın. için - akışları üretme/yayınlama - aracıya tek bir bağlantıyı sürdürmek için
CachingConnectionFactory
'u ve daha sonra oturumları ve üreticileri önbelleğe almak içinCachingConnectionFactory
kullanın.
Üretme/yayımlama için, benim (geniş) sunucu uygulamasının şu anda yaptığı şey, daha önce yayınladığı her bir ileti için yeni bir bağlantı/oturum/yapımcı oluşturmasıdır (kötü!). JmsTemplate
altında ham bağlantı fabrikasının. Eski davranış, bazen yüksek zirve dönemlerinde kısa bir süre içinde komisyoncu üzerinde 1.000'lerce bağlantı oluşturulup kapatılmakta ve sonuç olarak soket/dosya tanıtıcı limitlerine çarpmaktadır. Ancak, bu modele geçerken, performans sınırlamalarının/değerlendirmelerin, aracıya tek bir TCP bağlantısı kullanılarak ne olduğunu anlamada sorun yaşıyorum. Ben JMS sağlayıcı bunun çok kanallı bir şekilde vb kullanılabilir sağlaması bekleniyor anlıyoruz - ama pratik bir bakış açısı
- gelen bu
- bir dereceye kadar JMS sağlayıcı gerekiyor sadece tek TCP bağlantısı var onlar bir araya sokulmuş karmakarışık sona kalmamak koordine kesinlikle bu belirli ağ ile tek bağlantısı
- kullanarak ipler/oturumlar arasında bazı çekişme içerir
- iç protokolde bazı chunking sahip olsa bile, borunun aşağı yazıyor anlambilim (komisyoncunun istikrarsız verimi için yüksek gecikme?) kesinlikle tek bir bağlantı ideal olmaz mı? Ben doğru yolda
- Ben kapalı burada taban ve alttaki bağlantıları çalışması ve JMS sağlayıcı tarafından paylaşılır nasıl yanlış anlama muyum üzerinde biraz değilim varsayımı üzerine
?
- herhangi bir çekişme daha fazla bağlantıya sahip olmanın yol açtığı bir sorun değil ya da yalnızca çekişmeyi aracıya taşıyor mu?
- Paylaşabilecekleri herhangi bir sınırın aşılması konusunda pratik bir deneyimi var mı? Belirli bir mesaj veya ağ iş hacmiyle ya da hatta paralel bir bağlantıyı paylaşan iş parçacığı/oturumların sayısı neden olabilir
- Küçük iletiler yazan diğer oturumları engelleyen çok büyük mesajlar yazan oturumlar hakkında tek bir bağlantı senaryosunda endişelenmeniz gerekir mi?
Konuyla ilgili daha fazla bilgi edinmek veya diğer brokerlerle bile deneyim kazanmak için herhangi bir düşünceyi veya göstericiyi takdir ederdim.
darboğaz düşünürken, zihin iki gerçekler tutmak
Teşekkür sistem kaynağı sınırlarını ulaşana kadar
Sen iyi. Tecrübemde, birden çok bağlantı genellikle tek bir bağlantıyı kaybolan veya yüksek gecikmeli ağ durumunda veya tek bir "iletiyi" işlemek için istek/bekleme/istek/beklemeyi içeren bir uygulama katmanı protokolüyle önemli ölçüde geride bırakacaktır; yerine * her zaman * olmak. Sanırım aldığım şey, Tibco tarafında hiçbir tavsiyede bulunmamam; ve genel JMS'de okuduğum tüm şeyler (ve aslında ActiveMQ) sadece tek bir bağlantı kullanacak gibi görünüyor; sınırlamaları hakkında çok fazla tartışma olmadan. – Chad