Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Spring JMS kullanırken bilinen sorunları ve yaygın hataları giderme adımları açıklanmaktadır. Makale, spring-cloud-azure-starter-servicebus-jmshakkında sık sorulan bazı soruları da yanıtlar.
Bağlantı sorunları
MessageProducer kurtarılamaz bir hata nedeniyle kapatıldı
Sorun açıklaması
İleti göndermek için JmsTemplate kullanırken, JmsTemplate 10 ile 15 dakika arasında boşta kalma süresi boyunca kullanılamaz duruma gelir. Bu aralıkta ileti göndermek, aşağıdaki örnek çıktıda gösterilen özel durumları alabilir:
2022-11-06 11:12:05.762 INFO 25944 --- [ scheduling-1] c.e.demo.ServiceBusJMSMessageProducer : Sending message: 2022-11-06T11:12:05.762072 message 1
2022-11-06 11:12:05.772 ERROR 25944 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
org.springframework.jms.IllegalStateException: The MessageProducer was closed due to an unrecoverable error.; nested exception is javax.jms.IllegalStateException: The MessageProducer was closed due to an unrecoverable error.
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:274) ~[spring-jms-5.3.23.jar:5.3.23]
...
Caused by: org.apache.qpid.jms.provider.ProviderException: The link 'G0:36906660:qpid-jms:sender:azure:5caf3ef4-9602-413c-964d-cf1292d6e1f5:1:1:1:t4' is force detached. Code: publisher(link376). Details: AmqpMessagePublisher.IdleTimerExpired: Idle timeout: 00:10:00. [condition = amqp:link:detach-forced]
at org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToNonFatalException(AmqpSupport.java:181) ~[qpid-jms-client-0.53.0.jar:na]
...
Neden analizi
AMQP bağlantısı ve bağlantısı etkinken arama olmadığında (örneğin, arama gönderme veya alma) 10 dakika boyunca bağlantı kullanılarak yapıldığında Azure Service Bus
Service Bus JMS başlatıcısı için, oturumu, üreticiyi ve tüketiciyi önbelleğe alan CachingConnectionFactory varsayılan olarak kullanılır.
JmsProducer 10 dakikadan uzun ancak 15'ten kısa bir süre boşta kaldığında, önbelleğe alınan üreticinin kapsadığı bağlantı kapatılır. İletiler bu aralıkta gönderilemiyor. Ardından, 5 dakika daha boşta kaldıktan sonra tüm bağlantı kapatılır. Bu nedenle, 15 dakikalık boşta kalma aralığından sonraki herhangi bir gönderme işlemi, CachingConnectionFactory gönderilecek yeni bir bağlantı oluşturmasına neden olur. Gönderme işlemi 15 dakika sonra kullanılabilir hale gelir.
Geçici çözüm
Şu anda starter, havuzların JmsPoolConnectionFactory, Connectionve Sessionhavuzlarını oluşturan ve havuza alınan örneklerin yaşam döngüsünü yöneten MessageProduceruygulayarak bağlantı ayırma sorunu için geçici bir çözüm sağlar. Bu geçici çözüm, bir üreticinin kullanılamadıktan sonra çıkarılmasını ve bu nedenle tüm gönderme işlemlerinin etkin üreticiler üzerinde gerçekleştirilmesini sağlayabilir.
Bu geçici çözümü kullanmak için aşağıdaki yapılandırmayı ekleyin:
spring:
jms:
servicebus:
pool:
enabled: true
max-connections: ${your-expected-max-connection-value}
Kullanımı: spring.jms.servicebus.idle-timeout
Boşta kalma zaman aşımı özellikleri, AMQP bağlantısının boşta zaman aşımı yapılandırır. AMQP belirtimi aşağıdaki açıklamayı sağlar:
Bağlantılar boşta kalma zaman aşımı eşiğine tabidir. Eşik değeri aşıldıktan sonra çerçeve alınmadığında zaman aşımı yerel bir eş tarafından tetiklenir. Boşta kalma zaman aşımı milisaniye cinsinden ölçülür ve son çerçevenin alındığı zamandan itibaren başlar. Eşik aşılırsa eş, nedenini açıklayan bir hatayla yakın bir çerçeve kullanarak bağlantıyı düzgün bir şekilde kapatmayı denemelidir. Uzak eş buna eşik içinde düzgün bir şekilde yanıt vermezse, eş TCP yuvasını kapatabilir.
Bir JMS istemcisi için, bu özelliği yapılandırdığınızda, sunucu tarafında hiçbir ileti teslim edildiğinde bağlantının canlı kalmasını sağlamak için sunucunun boş bir çerçeve göndermesini ne kadar bekleyeceğinizi denetlersiniz. Bu özellik uzak eş davranışını denetler ve her eş kendi yalıtılmış değerine sahip olabilir.
JmsTemplate sorunları
Zamanlanmış iletiler
Azure Service Bus gecikmeli ileti işlemeyi destekler. Daha fazla bilgi için İleti sıralama ve zaman damgalarıZamanlanmış iletiler bölümüne bakın. JMS için, bir ileti zamanlamak için ScheduledEnqueueTimeUtcileti ek açıklaması üst bilgisini kullanarak x-opt-scheduled-enqueue-time özelliğini ayarlayın.
JmsListener sorunları
Sunucuda ileti olmamasına rağmen Service Bus'a çok fazla istek gönderiliyor
Sorun açıklaması
@JmsListener API'sini kullanırken, bazı durumlarda Azure portalında, sunucuda alacak ileti olmasa bile kuyruğuna veya konu başlıklarına gönderilen gelen istekler için sürekli değerler olduğunu görebilirsiniz.
Neden analizi
@JmsListener, yinelenen yoklama girişimleri için oluşturulmuş bir yoklama dinleyicisidir.
Dinleyici, devam eden bir yoklama döngüsünde yer alır. Her döngü, yerel tüketiciyi iletilerin tüketmesi için yoklama yapmak için JMS MessageConsumer.receive() yöntemini çağırır. Varsayılan olarak, her yoklama işlemi için yerel tüketici, ileti istemek için ileti aracısına çekme istekleri gönderir ve ardından belirli bir süre için engeller. Beton yoklama işlemi, receiveTimeout, prefetchSizeve receiveLocalOnly veya receiveNoWaitLocalOnlygibi çeşitli özelliklerle belirlenir.
receiveNoWaitLocalOnly yöntemi yalnızca receiveTimeout negatif bir değere ayarladığınızda kullanılır.
Bu sorun uygulamanıza oluştuğunda aşağıdaki yapılandırma ayarlarını denetleyin:
Ön ilkenizin varsayılan seçenek olan 0 olup olmadığını belirleyin. 0-prefetch, her anket için Service Bus'a çekme istekleri gönderen bir çekme tüketicisi anlamına gelir.
Sıfır olmayan bir ön koşul yapılandırdıysanız,
receiveLocalOnlyveyareceiveNoWaitLocalOnlyözelliğinizin varsayılan seçenek olanfalseolarak ayarlanıp ayarlanmadığını belirleyin. Buradafalsebir değer, yalnızca yerel tüketiciyi yoklamadığından sunucuya çekme istekleri gönderilmesine neden olur.receiveTimeoutyapılandırması, her çekme isteğinin ne kadar süreyle engelleneceğini belirler, bu nedenle sunucuya gönderilen çekme isteklerinin sıklığını etkileyebilir. Varsayılan değer 1 saniyedir.
Tam bir analiz için
Çözümleri
Aşağıdaki bölümlerde bu sorunla başa çıkmak için iki çözüm açıklanmaktadır
Çözüm 1. Tüketiciyi göndermek ve yalnızca yerel denetim yapmak için değiştirin
Modu pusholarak değiştirerek tüketici, aracıdan ileti çekmeyen ancak hedef miktarda bağlantı kredisi tutan Zaman Uyumsuz Bildirim tüketicisi olur. Tutar, bir prefetch özelliği tarafından belirlenir. Service Bus (gönderen) iletileri gönderirken, gönderenin bağlantı kredisi azalır ve gönderenin bağlantı kredisi eşiğin altına düştüğünde, istemci (alıcı) gönderenin bağlantı kredisini istenen hedef tutara geri döndürmek için sunucuya bir istek gönderir.
Bu çözümü gerçekleştirmek için aşağıdaki yapılandırmayı ekleyin:
İlk olarak, prefetch numarasını sıfır olmayan olarak yapılandırın; bu da tüketiciyi çekme dışı olarak yapılandırılır. Aşağıdaki tabloda, her biri farklı Service Bus varlıklarını denetleyen çeşitli prefetch özellikleri gösterilmektedir. Servis talebinize uygulanacak özellikleri ayarlayın.
| Mülk | Açıklama |
|---|---|
spring.jms.servicebus.prefetch.all |
Bu Service Bus ad alanında prefetch seçeneğinin geri dönüş değeri |
spring.jms.servicebus.prefetch.queue-prefetch |
Kuyruğun ön koşul numarası. |
spring.jms.servicebus.prefetch.queue-browser-prefetch |
Kuyruk tarayıcısının ön koşul numarası. |
spring.jms.servicebus.prefetch.topic-prefetch |
Konu için ön koşul numarası. |
spring.jms.servicebus.prefetch.durable-topic-prefetch |
Dayanıklı konu için ön koşul numarası. |
İkinci olarak, aşağıdaki örnekte gösterildiği gibi fabrika özelleştiricisi için bir yapılandırma sınıfı ekleyerek non-local-check yapılandırın:
@Configuration(proxyBeanMethods = false)
public class CustomJmsConfiguration {
@Bean
ServiceBusJmsConnectionFactoryCustomizer customizer() {
return factory -> {
factory.setReceiveLocalOnly(true);
// Configure the below ReceiveNoWaitLocalOnly instead if you have specified the property
// spring.jms.listener.receive-timeout with negative value. Otherwise, configure the above `ReceiveLocalOnly`.
//factory.setReceiveNoWaitLocalOnly(true);
};
}
}
Ön koşul değeri, iletilerin tüketicinin yerel arabelleğine ne kadar hızlı gönderildiğini etkileyebilir. Değeri tüketen performansınıza ve ileti birimlerinize göre ayarlamanız gerekir. Uygun bir değer, tüketen işlemi hızlandırabilirken, çok büyük bir değer yerel olarak arabelleğe alınan iletilerin güncel olmasına ve yeniden gönderilmesine neden olabilir. Her iletinin işlenmesinin uzun sürdüğü düşük ileti birimleri için, ön işlemi 1 olarak ayarlayın. Bu değer, tüketicinin bir kerede yalnızca bir iletiyi işlemesini sağlar.
Çözüm 2. Çekme sıklığını azaltmak için alma zaman aşımını artırın
Alma zaman aşımı özelliği, tüketicinin çekme sonucunu ne kadar süreyle bekleyeceğine ilişkin stratejiyi belirler. Bu nedenle, zaman aşımını genişleterek çekme sıklığını azaltabilir ve ardından çekme modunu seçtiğinizde çekme isteklerinin sayısını azaltabilirsiniz. Aşırı durumlarda, bir ileti gelene kadar süresiz bekleme stratejisini ayarlayabilirsiniz; bu da tüketicinin yalnızca bir iletiyi kullandıktan sonra çekmesi anlamına gelir. Bu durumda, sunucuda ileti olmadığında beklemeyi engeller.
Bu çözümü gerçekleştirmek için spring.jms.listener.receive-timeout özelliğini yapılandırın. Bu özellik java.time.Duration türündedir ve varsayılan değeri 1 saniyedir. Aşağıdaki listede çeşitli değerlerin etkisi açıklanmaktadır:
- Alma zaman aşımının 0 olarak ayarlanması, bir ileti dağıtılana kadar çekme işleminin süresiz olarak engellendiği anlamına gelir.
- Alma zaman aşımını pozitif bir değere ayarlamak, çekme işleminin zaman aşımı süresine kadar engel olduğu anlamına gelir.
- Alma zaman aşımını negatif bir değere ayarlamak, çekme işleminin beklemeyen bir alma olduğu anlamına gelir; bu da hemen bir ileti döndürdüğü veya kullanılabilir ileti yoksa
nullanlamına gelir.
Not
Yüksek bir zaman aşımı değeri bazı yan etkiler getirebilir. Örneğin, yüksek bir zaman aşımı değeri de ana iş parçacığının blok durumundaki süresini uzatır. Bu durum, kapsayıcının stop() çağrılara daha az yanıt verebileceği ve yalnızca receive() çağrıları arasında durabileceği anlamına gelir.
Ayrıca kapsayıcı yalnızca receive-timeout aralığı geçtikten sonra istek gönderebilir. Aralık 10 dakikadan uzunsa, Service Bus bağlantıyı kapatır ve dinleyicinin göndermesini veya almasını engeller. Daha fazla bilgi için Azure Service Bus
Yüksek bir alış zaman aşımına ihtiyacınız varsa JmsPoolConnectionFactorykullandığınızdan emin olun.
Bağlantı kapatma sorunu ve JmsPoolConnectionFactorykullanma hakkında daha fazla bilgi için messageproducer kurtarılamaz bir hata nedeniyle kapatıldı bölümüne bakın.
Önceden yükleme sorunu
Sorun açıklaması
Uygun olmayan bir ön koşul ilkesi aşağıdaki sorunlara neden olabilir:
- Aynı iletiler tekrar tekrar tüketilir.
- İletiler hata veya özel durum olmadan işlendiğinde bile
MaxDeliveryCountExceededsonra teslim edilemeyen ileti kuyruğuna alınır.
Neden analizi
Bu sorun genellikle değer gerçek tüketen kapasiteden yüksek olduğunda prefetch ve yerel arabelleğe çok fazla iletinin tüketilmeyi beklemesi etkisiyle ortaya çıkar. Ancak, önceden oluşturulmuş iletiler Service Bus tarafından bir peek-lock modda gönderildi olarak görüntülenir. Dağıtılan her iletinin bir max-delivery-count ve lock-duration öznitelikleri vardır.
peek-lock Alma modunda, ön yakalama arabelleğine getirilen iletiler kilit için zaman aşımı saati işaretleyerek kilit durumunda arabelleğe alınır. Ön işlem arabelleği büyükse ve işlem o kadar uzun sürüyorsa, ileti kilitlerinin süresi ön koşul arabelleğinde kalırken sona erer, ileti terk edilmiş olarak değerlendirilir ve kuyruktan alınmak üzere yeniden kullanılabilir hale gelir.
Bu sorun, iletinin ön yakalama arabelleğine alınmasına ve sonuna yerleştirilmesine neden olabilir. İleti süresi dolmadan önce ön işlem arabelleği işlenmezse, iletiler tekrar tekrar önceden eklenir ancak kullanılabilir (geçerli olarak kilitlenmiş) bir durumda hiçbir zaman etkili bir şekilde teslim edilmez. Ardından, bu eski kopyalar sıralandığında, uygulama aynı iletiyi tekrar tekrar tüketir ve tamamlayamaz. Başka bir durumda, yinelenen iletilerin tümü arabellekte tüketilmeden önce sona erer. Bu durumda, Service Bus'taki ileti, teslim sayısı üst sınırı aşıldıktan sonra sonunda teslim edilemeyen ileti kuyruğuna taşınır.
Daha fazla bilgi için Prefetch neden varsayılan seçenek değildir bakın. Azure Service Bus iletileriniönceden bölümü.
Çözüm
Kullanım özelliğine uyduğundan emin olmak için prefetch yapılandırmasına dikkat edin. Ön işlem sayısı üst sınırını ve kuyrukta veya abonelikte yapılandırılan kilit süresini, kilit zaman aşımının en az ön yükleme arabelleğinin maksimum boyutu için beklenen toplu ileti işleme süresini ve bir iletiyi aştığı şekilde dengelemeniz gerekir. Aynı zamanda, kilit zaman aşımı, iletilerin yanlışlıkla bırakıldığında yaşam süresi üst sınırını aşması ve böylece yeniden teslim edilmeden önce kilitlerinin süresinin dolmasını gerektirmesi gibi uzun olmamalıdır.
Varsayılan değeri sıfır olan prefetch özniteliğini yapılandırmak için aşağıdaki özelliklerden birini kullanın:
| Mülk | Açıklama |
|---|---|
spring.jms.servicebus.prefetch.all |
Bu Service Bus ad alanında prefetch seçeneğinin geri dönüş değeri. |
spring.jms.servicebus.prefetch.queue-prefetch |
Kuyruğun ön koşul numarası. |
spring.jms.servicebus.prefetch.queue-browser-prefetch |
Kuyruk tarayıcısının ön koşul numarası. |
spring.jms.servicebus.prefetch.topic-prefetch |
Konu için ön koşul numarası. |
spring.jms.servicebus.prefetch.durable-topic-prefetch |
Dayanıklı konu için ön koşul numarası. |
Service Bus'a AMQP dağıtımı nasıl yapılır?
JMS, mesajlaşma aracısına ileti onaylarken beş AMQP değerlendirme türünü destekler. Desteklenen değerler ACCEPTED, REJECTED, RELEASED, MODIFIED_FAILEDve MODIFIED_FAILED_UNDELIVERABLE'dır. Daha fazla bilgi için Azure Service Bus standart ve AMQP 1.0ile Java message Service 1.1 kullanma
Bu nedenle, JmsListenerkullanarak iletiyi el ile tamamlamak, bırakmak, teslim edilemeyen harfi ertelemek veya serbest bırakmak için aşağıdaki adımları kullanın:
Oturum işlemeyi devre dışı bırakın ve client ack modunu kullanın.
Bu görevi gerçekleştirmek için kendi JmsListenerContainerFactory bean bildirin ve ardından özellikleri ayarlayın ya da
JmsListenerContainerFactoryiçinde tanımlanan işlemi gerçekleştirin. Aşağıdaki örnek, başka bir fasulye bildirme yaklaşımını kullanır:@Configuration(proxyBeanMethods = false) public class CustomJmsConfiguration { @Bean public JmsListenerContainerFactory<?> customQueueJmsListenerContainerFactory( DefaultJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory jmsListenerContainerFactory = new DefaultJmsListenerContainerFactory(); configurer.configure(jmsListenerContainerFactory, connectionFactory); jmsListenerContainerFactory.setPubSubDomain(Boolean.FALSE); jmsListenerContainerFactory.setSessionTransacted(Boolean.FALSE); jmsListenerContainerFactory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); return jmsListenerContainerFactory; } }İleti işleyicinizde iletileri açıkça tamamlayın veya bırakın.
@JmsListener(destination = "QUEUE_NAME", containerFactory = "customQueueJmsListenerContainerFactory") public void receiveMessage(JmsTextMessage message) throws Exception { String event = message.getBody(String.class); try { logger.info("Received event: {}", event); logger.info("Received message: {}", message); // by default complete the message message.acknowledge(); } catch (Exception e) { logger.error("Exception while processing re-source event: " + event, e); JmsAcknowledgeCallback acknowledgeCallback = message.getAcknowledgeCallback(); // explicitly abandon the message acknowledgeCallback.setAckType(MODIFIED_FAILED); message.setAcknowledgeCallback(acknowledgeCallback); message.acknowledge(); throw e; } }
Yapılandırma sorunları
Service Bus JMS otomatik yapılandırmayı devre dışı bırakma
Sorun açıklaması
Bazı kullanıcılar, Service Bus JMS dışında bir Azure hizmetinin otomatik yapılandırması için spring cloud Azure Starter'ı içeri aktarır. Ayrıca Service Bus JMS'ye gerek kalmadan Spring JMS çerçevesini de kullanırlar. Ardından, uygulama başlamaya çalıştığında aşağıdaki özel durumlar oluşturulur:
Caused by: java.lang.IllegalArgumentException: 'spring.jms.servicebus.connection-string' should be provided
at com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties.afterPropertiesSet(AzureServiceBusJmsProperties.java:210)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
... 98 more
Neden analizi
Bu sorun, tüm Spring Cloud Azure otomatik yapılandırma sınıflarının aynı modüle yerleştirilmesinden kaynaklandığından, tüm Spring Cloud Azure Starter aslında Service Bus JMS'yi de içeren tüm otomatik yapılandırmayı içeri aktarır. Ardından uygulama Spring JMS API'sini kullandığında Service Bus JMS otomatik yapılandırma koşulunu karşılar ve tetikler. Ardından, spring-cloud-azure-starter-servicebus-jmskullanmayı amaçlamayan kullanıcılar için özellik koşulları karşılanmaz çünkü JMS için Service Bus'ı yapılandırmaları için bir neden yoktur. Bu durum özel durumların atılması neden olur.
Çözüm
Service Bus için Spring Cloud Azure JMS, otomatik yapılandırmayı açmak veya kapatmak için bir özellik sağlar. Aşağıdaki özellik ayarını kullanarak bu işlevi gerektiği gibi devre dışı bırakabilirsiniz:
spring.jms.servicebus.enabled=false
İleti özniteliklerini yapılandırma
Giden iletilerin içerik türü nasıl ayarlanır?
İçerik türünü yapılandırmak için İleti Dönüştürücüsü'nü özelleştirerek iletileri dönüştürürken içerik türü özniteliğini değiştirin. Aşağıdaki kod, bayt iletilerini örnek olarak alır.
İlk olarak, aşağıdaki örnekte gösterildiği gibi JmsTemplateiçinde kullanılacak ileti dönüştürücüsİnİ özelleştirin:
public class CustomMappingJackson2MessageConverter extends MappingJackson2MessageConverter {
public static final String CONTENT_TYPE = "application/json";
public CustomMappingJackson2MessageConverter() {
this.setTargetType(MessageType.BYTES);
}
@Override
protected BytesMessage mapToBytesMessage(Object object, Session session, ObjectWriter objectWriter)
throws JMSException, IOException {
final BytesMessage message = super.mapToBytesMessage(object, session, objectWriter);
JmsBytesMessage msg = (JmsBytesMessage) message;
AmqpJmsMessageFacade facade = (AmqpJmsMessageFacade) msg.getFacade();
facade.setContentType(Symbol.valueOf(CONTENT_TYPE));
return msg;
}
}
Ardından, bu örnekte gösterildiği gibi özelleştirilmiş ileti dönüştürücü çekirdeğinizi bildirin:
@Configuration(proxyBeanMethods = false)
public class CustomJmsConfiguration {
@Bean
public MessageConverter messageConverter() {
return new CustomMappingJackson2MessageConverter();
}
}
MappingJackson2MessageConverter için tür kimliği özellik adı nasıl ayarlanır?
type-id-property-name özniteliği, MappingJackson2MessageConverter ileti yükünü seri durumdan çıkarmak için hangi sınıfın kullanılacağını belirlemesini sağlar. Her Java nesnesini spring message yüküne seri hale getirdiğinizde, dönüştürücü yük türünü type-id-property-nametarafından kaydedilen özellik adıyla bir ileti özelliğinde depolar. Ardından, iletiyi seri durumdan çıkarırken, dönüştürücü iletiden tür kimliğini okur ve seri durumdan çıkarma gerçekleştirir.
type-id-property-nameayarlamak için, aşağıdaki örnekte gösterildiği gibi kendi MappingJackson2MessageConverter fasulyenizi bildirin ve bu özelliği yapılandırın:
@Configuration(proxyBeanMethods = false)
public class CustomJmsConfiguration {
@Bean
public MessageConverter jacksonJmsMessageConverter()
{
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTypeIdPropertyName("your-custom-type-id-property-name");
return converter;
}
}
Yinelenen algılama
Azure Service Bus, iletileri benzersiz olarak tanımlamak ve Service Bus'a gönderilen yinelenenleri atmak için
Ancak JMS API'si için JMS belirtimlerinde geçersiz olarak kabul edilen JMS ileti kimliğini ayarlamamalısınız. Bu nedenle bu özellik şu anda Spring Cloud Azure Service Bus JMS Starter için desteklenmemektedir.
Bu özellik hakkında daha fazla güncelleştirme içinGitHub
AMQP aktarım günlüğünü etkinleştirme
Daha fazla bilgi için service bus sorunlarını giderme
Ek yardım alın
Destek için ulaşma yolları hakkında daha fazla bilgi için deponun kökündeki Destek
Spring Cloud Azure Service Bus JMS starter kaynakları
- JMS ile Azure Service Bus kullanma
- Azure Service Bus erişmek için Spring'de JMS kullanma
- Spring Cloud Azure 4.0 için
Geçiş kılavuzu - Örnek
GitHub sorunlarını dosyalama
GitHub sorunlarını bildirirken aşağıdaki ayrıntılar istenir:
- Service Bus yapılandırması / Ad alanı ortamı
- Ad alanı (standart veya premium) hangi katmandır?
- Hangi tür mesajlaşma varlığı kullanılıyor (kuyruk veya konu)? ve yapılandırması.
- Her iletinin ortalama boyutu nedir?
- Trafik düzeni nasıldır? (diğer bir ifadeyle dakika başına ileti sayısı ve İstemcinin her zaman meşgul olup olmadığı veya trafik dönemlerinin yavaş olup olmadığı.)
- Yeniden oluşturma kodu ve adımları
- Bu, sorunu genellikle ortamımızda yeniden oluşturamadığımız için önemlidir.
- Günlük