This commit is contained in:
Justin Bertram 2020-05-01 11:56:02 -05:00
commit a38d58618b
2 changed files with 13 additions and 4 deletions

View File

@ -466,7 +466,7 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
server.callBrokerAddressPlugins(plugin -> plugin.afterAddAddress(addressInfo, reload));
}
long retroactiveMessageCount = addressSettingsRepository.getMatch(addressInfo.getName().toString()).getRetroactiveMessageCount();
if (retroactiveMessageCount > 0) {
if (retroactiveMessageCount > 0 && !addressInfo.isInternal() && !ResourceNames.isRetroactiveResource(server.getInternalNamingPrefix(), addressInfo.getName())) {
createRetroactiveResources(addressInfo.getName(), retroactiveMessageCount, reload);
}
if (ResourceNames.isRetroactiveResource(server.getInternalNamingPrefix(), addressInfo.getName())) {

View File

@ -100,13 +100,22 @@ public class RetroactiveAddressTest extends ActiveMQTestBase {
}
@Test
public void testRetroactiveResourceCreation() throws Exception {
final SimpleString addressName = SimpleString.toSimpleString("myAddress");
public void testRetroactiveResourceCreationWithExactMatch() throws Exception {
internalTestRetroactiveResourceCreation("myAddress", "myAddress");
}
@Test
public void testRetroactiveResourceCreationWithWildcardMatch() throws Exception {
internalTestRetroactiveResourceCreation("myAddress", "#");
}
private void internalTestRetroactiveResourceCreation(String address, String match) throws Exception {
final SimpleString addressName = SimpleString.toSimpleString(address);
final SimpleString divertAddress = ResourceNames.getRetroactiveResourceAddressName(internalNamingPrefix, delimiter, addressName);
final SimpleString divertMulticastQueue = ResourceNames.getRetroactiveResourceQueueName(internalNamingPrefix, delimiter, addressName, RoutingType.MULTICAST);
final SimpleString divertAnycastQueue = ResourceNames.getRetroactiveResourceQueueName(internalNamingPrefix, delimiter, addressName, RoutingType.ANYCAST);
final SimpleString divert = ResourceNames.getRetroactiveResourceDivertName(internalNamingPrefix, delimiter, addressName);
server.getAddressSettingsRepository().addMatch(addressName.toString(), new AddressSettings().setRetroactiveMessageCount(10));
server.getAddressSettingsRepository().addMatch(match, new AddressSettings().setRetroactiveMessageCount(10));
server.addAddressInfo(new AddressInfo(addressName));
assertNotNull(server.getAddressInfo(divertAddress));
assertNotNull(server.locateQueue(divertMulticastQueue));