Skip to content

Commit eef070a

Browse files
committed
Some code clean up for ChMessStoreQueryProvider
* Add a version for deprecation on `AbstractChannelMessageStoreQueryProvider` * Remove dead links from `ChannelMessageStoreQueryProvider` impl JavaDocs * Use text blocks for long query strings * Move `SELECT_COMMON` constant to the `ChannelMessageStoreQueryProvider` interface
1 parent 0a95091 commit eef070a

9 files changed

+113
-107
lines changed

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/AbstractChannelMessageStoreQueryProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
* @author Adama Sorho
2424
*
2525
* @since 2.2
26-
* @deprecated in favor of default methods in ChannelMessageStoreQueryProvider
26+
* @deprecated since 6.2 in favor of default methods in {@link ChannelMessageStoreQueryProvider}
2727
*/
28-
@Deprecated
28+
@Deprecated(since = "6.2", forRemoval = true)
2929
public abstract class AbstractChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
3030
}

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/ChannelMessageStoreQueryProvider.java

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -30,91 +30,99 @@
3030
*/
3131
public interface ChannelMessageStoreQueryProvider {
3232

33+
String SELECT_COMMON = """
34+
SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES
35+
from %PREFIX%CHANNEL_MESSAGE
36+
where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region\s
37+
""";
38+
3339
/**
3440
* Get the query used to retrieve a count of all messages currently persisted
3541
* for a channel.
36-
*
37-
* @return Sql Query
42+
* @return query string
3843
*/
3944
default String getCountAllMessagesInGroupQuery() {
4045
return "SELECT COUNT(MESSAGE_ID) from %PREFIX%CHANNEL_MESSAGE where GROUP_KEY=? and REGION=?";
4146
}
4247

43-
/**
44-
* Get the query used to retrieve the oldest message for a channel excluding
45-
* messages that match the provided message ids.
46-
*
47-
* @return Sql Query
48-
*/
49-
String getPollFromGroupExcludeIdsQuery();
50-
51-
/**
52-
* Get the query used to retrieve the oldest message for a channel.
53-
*
54-
* @return Sql Query
55-
*/
56-
String getPollFromGroupQuery();
57-
58-
/**
59-
* Get the query used to retrieve the oldest message by priority for a channel excluding
60-
* messages that match the provided message ids.
61-
*
62-
* @return Sql Query
63-
*/
64-
String getPriorityPollFromGroupExcludeIdsQuery();
65-
66-
/**
67-
* Get the query used to retrieve the oldest message by priority for a channel.
68-
*
69-
* @return Sql Query
70-
*/
71-
String getPriorityPollFromGroupQuery();
72-
7348
/**
7449
* Query that retrieves a message for the provided message id, channel and
7550
* region.
76-
*
77-
* @return Sql Query
51+
* @return query string
7852
*/
7953
default String getMessageQuery() {
80-
return "SELECT MESSAGE_ID, CREATED_DATE, MESSAGE_BYTES from %PREFIX%CHANNEL_MESSAGE where MESSAGE_ID=? and GROUP_KEY=? and REGION=?";
54+
return """
55+
SELECT MESSAGE_ID, CREATED_DATE, MESSAGE_BYTES
56+
from %PREFIX%CHANNEL_MESSAGE
57+
where MESSAGE_ID=? and GROUP_KEY=? and REGION=?
58+
""";
8159
}
8260

8361
/**
8462
* Query that retrieve a count of all messages for a region.
85-
*
86-
* @return Sql Query
63+
* @return query string
8764
*/
8865
default String getMessageCountForRegionQuery() {
8966
return "SELECT COUNT(MESSAGE_ID) from %PREFIX%CHANNEL_MESSAGE where REGION=?";
9067
}
9168

9269
/**
9370
* Query to delete a single message from the database.
94-
*
95-
* @return Sql Query
71+
* @return query string
9672
*/
9773
default String getDeleteMessageQuery() {
9874
return "DELETE from %PREFIX%CHANNEL_MESSAGE where MESSAGE_ID=? and GROUP_KEY=? and REGION=?";
9975
}
10076

10177
/**
10278
* Query to add a single message to the database.
103-
*
104-
* @return Sql Query
79+
* @return query string
10580
*/
10681
default String getCreateMessageQuery() {
107-
return "INSERT into %PREFIX%CHANNEL_MESSAGE(MESSAGE_ID, GROUP_KEY, REGION, CREATED_DATE, MESSAGE_PRIORITY, MESSAGE_BYTES)"
108-
+ " values (?, ?, ?, ?, ?, ?)";
82+
return """
83+
INSERT into %PREFIX%CHANNEL_MESSAGE(
84+
MESSAGE_ID,
85+
GROUP_KEY,
86+
REGION,
87+
CREATED_DATE,
88+
MESSAGE_PRIORITY,
89+
MESSAGE_BYTES)
90+
values (?, ?, ?, ?, ?, ?)
91+
""";
10992
}
11093

11194
/**
11295
* Query to delete all messages that belong to a specific channel.
113-
*
114-
* @return Sql Query
96+
* @return query string
11597
*/
11698
default String getDeleteMessageGroupQuery() {
11799
return "DELETE from %PREFIX%CHANNEL_MESSAGE where GROUP_KEY=? and REGION=?";
118100
}
119101

102+
/**
103+
* Get the query used to retrieve the oldest message for a channel excluding
104+
* messages that match the provided message ids.
105+
* @return query string
106+
*/
107+
String getPollFromGroupExcludeIdsQuery();
108+
109+
/**
110+
* Get the query used to retrieve the oldest message for a channel.
111+
* @return query string
112+
*/
113+
String getPollFromGroupQuery();
114+
115+
/**
116+
* Get the query used to retrieve the oldest message by priority for a channel excluding
117+
* messages that match the provided message ids.
118+
* @return query string
119+
*/
120+
String getPriorityPollFromGroupExcludeIdsQuery();
121+
122+
/**
123+
* Get the query used to retrieve the oldest message by priority for a channel.
124+
* @return query string
125+
*/
126+
String getPriorityPollFromGroupQuery();
127+
120128
}

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/DerbyChannelMessageStoreQueryProvider.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,11 @@
2121
* @author Artem Bilan
2222
* @author Gary Russell
2323
* @author Adama Sorho
24-
* @since 2.2
2524
*
26-
* https://blogs.oracle.com/kah/entry/derby_10_5_preview_fetch
25+
* @since 2.2
2726
*/
2827
public class DerbyChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
2928

30-
private static final String SELECT_COMMON =
31-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
32-
+ "from %PREFIX%CHANNEL_MESSAGE "
33-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
34-
3529
@Override
3630
public String getPollFromGroupExcludeIdsQuery() {
3731
return SELECT_COMMON

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/H2ChannelMessageStoreQueryProvider.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,12 @@
2222
* @author Manuel Jordan
2323
* @author Gary Russell
2424
* @author Adama Sorho
25+
*
2526
* @since 4.3
2627
*
2728
*/
2829
public class H2ChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
2930

30-
private static final String SELECT_COMMON =
31-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
32-
+ "from %PREFIX%CHANNEL_MESSAGE "
33-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
34-
3531
@Override
3632
public String getCreateMessageQuery() {
3733
return "INSERT into %PREFIX%CHANNEL_MESSAGE(MESSAGE_ID, GROUP_KEY, REGION, CREATED_DATE, MESSAGE_PRIORITY, " +

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/HsqlChannelMessageStoreQueryProvider.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,32 @@
2020
* @author Gunnar Hillert
2121
* @author Artem Bilan
2222
* @author Adama Sorho
23+
*
2324
* @since 2.2
2425
*
2526
*/
2627
public class HsqlChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
2728

28-
private static final String SELECT_COMMON =
29-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
30-
+ "from %PREFIX%CHANNEL_MESSAGE "
31-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
32-
3329
@Override
3430
public String getCreateMessageQuery() {
35-
return "INSERT into %PREFIX%CHANNEL_MESSAGE(MESSAGE_ID, GROUP_KEY, REGION, CREATED_DATE, MESSAGE_PRIORITY, MESSAGE_SEQUENCE, MESSAGE_BYTES)"
36-
+ " values (?, ?, ?, ?, ?, NEXT VALUE FOR %PREFIX%MESSAGE_SEQ, ?)";
31+
return """
32+
INSERT into %PREFIX%CHANNEL_MESSAGE(
33+
MESSAGE_ID,
34+
GROUP_KEY,
35+
REGION,
36+
CREATED_DATE,
37+
MESSAGE_PRIORITY,
38+
MESSAGE_SEQUENCE,
39+
MESSAGE_BYTES)
40+
values (?, ?, ?, ?, ?, NEXT VALUE FOR %PREFIX%MESSAGE_SEQ, ?)
41+
""";
3742
}
3843

3944
@Override
4045
public String getPollFromGroupExcludeIdsQuery() {
4146
return SELECT_COMMON +
42-
"and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) order by CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1";
47+
"and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) " +
48+
"order by CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1";
4349
}
4450

4551
@Override

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/MySqlChannelMessageStoreQueryProvider.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,12 @@
2525
*/
2626
public class MySqlChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
2727

28-
private static final String SELECT_COMMON =
29-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
30-
+ "from %PREFIX%CHANNEL_MESSAGE "
31-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
32-
3328
@Override
3429
public String getPollFromGroupExcludeIdsQuery() {
3530
return SELECT_COMMON
3631
+ "and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) "
37-
+ "order by CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1 FOR UPDATE SKIP LOCKED";
32+
+ "order by CREATED_DATE, MESSAGE_SEQUENCE " +
33+
"LIMIT 1 FOR UPDATE SKIP LOCKED";
3834
}
3935

4036
@Override
@@ -47,13 +43,15 @@ public String getPollFromGroupQuery() {
4743
public String getPriorityPollFromGroupExcludeIdsQuery() {
4844
return SELECT_COMMON +
4945
"and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) " +
50-
"order by MESSAGE_PRIORITY DESC, CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1 FOR UPDATE SKIP LOCKED";
46+
"order by MESSAGE_PRIORITY DESC, CREATED_DATE, MESSAGE_SEQUENCE " +
47+
"LIMIT 1 FOR UPDATE SKIP LOCKED";
5148
}
5249

5350
@Override
5451
public String getPriorityPollFromGroupQuery() {
5552
return SELECT_COMMON +
56-
"order by MESSAGE_PRIORITY DESC, CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1 FOR UPDATE SKIP LOCKED";
53+
"order by MESSAGE_PRIORITY DESC, CREATED_DATE, MESSAGE_SEQUENCE " +
54+
"LIMIT 1 FOR UPDATE SKIP LOCKED";
5755
}
5856

5957
}

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/OracleChannelMessageStoreQueryProvider.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020
* Contains Oracle-specific queries for the
2121
* {@link org.springframework.integration.jdbc.store.JdbcChannelMessageStore}. Please
2222
* ensure that the used {@link org.springframework.jdbc.core.JdbcTemplate}'s fetchSize
23-
* property is <code>1</code>.
23+
* property is {@code 1}.
2424
* <p>
25-
* Fore more details, please see:
26-
* https://stackoverflow.com/questions/6117254/force-oracle-to-return-top-n-rows-with-skip-locked
2725
*
2826
* @author Gunnar Hillert
2927
* @author Artem Bilan
@@ -33,11 +31,6 @@
3331
*/
3432
public class OracleChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
3533

36-
private static final String SELECT_COMMON =
37-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
38-
+ "from %PREFIX%CHANNEL_MESSAGE "
39-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
40-
4134
@Override
4235
public String getCreateMessageQuery() {
4336
return "INSERT into %PREFIX%CHANNEL_MESSAGE(MESSAGE_ID, GROUP_KEY, REGION, CREATED_DATE, MESSAGE_PRIORITY, "
@@ -60,19 +53,27 @@ public String getPollFromGroupQuery() {
6053

6154
@Override
6255
public String getPriorityPollFromGroupExcludeIdsQuery() {
63-
return "SELECT /*+ INDEX(%PREFIX%CHANNEL_MESSAGE %PREFIX%CHANNEL_MSG_PRIORITY_IDX) */ " +
64-
"%PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES from %PREFIX%CHANNEL_MESSAGE " +
65-
"where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region " +
66-
"and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) " +
67-
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE FOR UPDATE SKIP LOCKED";
56+
return """
57+
SELECT /*+ INDEX(%PREFIX%CHANNEL_MESSAGE %PREFIX%CHANNEL_MSG_PRIORITY_IDX) */
58+
%PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES
59+
from %PREFIX%CHANNEL_MESSAGE
60+
where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key
61+
and %PREFIX%CHANNEL_MESSAGE.REGION = :region
62+
and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids)
63+
order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE FOR UPDATE SKIP LOCKED
64+
""";
6865
}
6966

7067
@Override
7168
public String getPriorityPollFromGroupQuery() {
72-
return "SELECT /*+ INDEX(%PREFIX%CHANNEL_MESSAGE %PREFIX%CHANNEL_MSG_PRIORITY_IDX) */ " +
73-
"%PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES from %PREFIX%CHANNEL_MESSAGE " +
74-
"where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region " +
75-
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE FOR UPDATE SKIP LOCKED";
69+
return """
70+
SELECT /*+ INDEX(%PREFIX%CHANNEL_MESSAGE %PREFIX%CHANNEL_MSG_PRIORITY_IDX) */
71+
%PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES
72+
from %PREFIX%CHANNEL_MESSAGE
73+
where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key
74+
and %PREFIX%CHANNEL_MESSAGE.REGION = :region
75+
order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE FOR UPDATE SKIP LOCKED
76+
""";
7677
}
7778

7879
}

spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/store/channel/PostgresChannelMessageStoreQueryProvider.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@
2525
*/
2626
public class PostgresChannelMessageStoreQueryProvider implements ChannelMessageStoreQueryProvider {
2727

28-
private static final String SELECT_COMMON =
29-
"SELECT %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID, %PREFIX%CHANNEL_MESSAGE.MESSAGE_BYTES "
30-
+ "from %PREFIX%CHANNEL_MESSAGE "
31-
+ "where %PREFIX%CHANNEL_MESSAGE.GROUP_KEY = :group_key and %PREFIX%CHANNEL_MESSAGE.REGION = :region ";
32-
3328
@Override
3429
public String getPollFromGroupExcludeIdsQuery() {
3530
return SELECT_COMMON
@@ -47,13 +42,15 @@ public String getPollFromGroupQuery() {
4742
public String getPriorityPollFromGroupExcludeIdsQuery() {
4843
return SELECT_COMMON +
4944
"and %PREFIX%CHANNEL_MESSAGE.MESSAGE_ID not in (:message_ids) " +
50-
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1 FOR UPDATE SKIP LOCKED";
45+
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE " +
46+
"LIMIT 1 FOR UPDATE SKIP LOCKED";
5147
}
5248

5349
@Override
5450
public String getPriorityPollFromGroupQuery() {
5551
return SELECT_COMMON +
56-
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE LIMIT 1 FOR UPDATE SKIP LOCKED";
52+
"order by MESSAGE_PRIORITY DESC NULLS LAST, CREATED_DATE, MESSAGE_SEQUENCE " +
53+
"LIMIT 1 FOR UPDATE SKIP LOCKED";
5754
}
5855

5956
}

0 commit comments

Comments
 (0)