我有一个队列,只要我在其中发送一些消息,就会从中读取消息。我没有配置死信队列,所以如果处理发送的消息产生异常,消息应该总是在那里。
我的代码是一个 SpringBootApplication,它侦听该队列并在发送一些错误消息时产生异常。侦听是通过 JMS 侦听器完成的。
更改队列名称后,相同的消息会一直存在,直到我手动删除它。但是在之前的队列中它被删除了,据我所知,我发现这真的很奇怪,因为我没有在任何地方运行我的服务。
我需要找出谁正在从我的 SQS 读取和删除消息。(IP 地址、AWS 凭证或其他东西)有办法吗?我听说过 CloudTrail 并试图弄清楚。
我想在第一个数字序列结束后删除所有字符.
编辑:(对不起歧义)
在第一个数字序列之后,应删除所有内容.
例如QWEE1232RTY - > QWE1232
123RTY - > 123
12342 - > 12342
str.replaceAll("[^A-Z][^0-9]+","");
Run Code Online (Sandbox Code Playgroud)这应该工作,但它给出了意想不到的输出,而不是打印重复的"2".
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "BCTC27452ASDFCCC";
System.out.println(str.replaceAll("[^A-Z0-9]",""));
// BCTC27452ASDFCCC
System.out.println(str.replaceAll("[^A-Z0-9]$",""));
// BCTC27452ASDFCCC
System.out.println(str.replaceAll("[^A-Z][^0-9]",""));
// BCTC2745SDFCCC
System.out.println(str.replaceAll("[^A-Z][^0-9]+",""));
// Closest Output - "BCTC2745" (why 2nd "2" not printed)
System.out.println(str.replaceAll("[^A-Z][^0-9]*",""));
// BCTC
System.out.println(str.replaceAll("[^A-Z][^0-9+]",""));
// BCTC2745SDFCCC
System.out.println(str.replaceAll("[^A-Z][^0-9*]",""));
// BCTC2745SDFCCC
System.out.println("Expected Output: BTC27452");
}
}
Run Code Online (Sandbox Code Playgroud)