Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk olyan kódmintákat mutat be, amelyek a Java Azure Queue Storage ügyfélkódtárának 8-es verzióját használják.
2023. március 31-én megszüntettük az Azure SDK-kódtárak támogatását, amelyek nem felelnek meg a jelenlegi Azure SDK-irányelveknek. Az új Azure SDK-kódtárak rendszeresen frissülnek az egységes felületek kialakításának elősegítése és a biztonsági helyzetének megerősítése érdekében. Ajánlott áttérni az új Azure SDK-kódtárakra, hogy kihasználhassa az új képességeket és a kritikus biztonsági frissítéseket.
Bár a régebbi kódtárak 2023. március 31-e után is használhatók, a Microsoft már nem nyújt hozzájuk hivatalos támogatást és frissítéseket. További információkért lásd a támogatási nyugdíjazási bejelentést.
A legújabb, 12.x-es ügyfélkódtár-verziót használó kódmintákért tekintse meg a Java Azure Queue Storage ügyfélkódtárának rövid útmutatóját.
Várakozási sor létrehozása
Adja hozzá a következő import irányelveket:
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.queue.*;
Egy CloudQueueClient objektum lehetővé teszi az üzenetsorok referenciaobjektumainak lekérését. Az alábbi kód létrehoz egy CloudQueueClient objektumot, amely a használni kívánt üzenetsorra mutató hivatkozást tartalmaz. Ha nem létezik, létrehozhatja az üzenetsort.
Feljegyzés
Más módokon is létrehozhat CloudStorageAccount objektumokat. További információkért tekintse meg CloudStorageAccount az Azure Storage-ügyfél SDK-referenciáját.)
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Create the queue if it doesn't already exist.
queue.createIfNotExists();
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Üzenet hozzáadása üzenetsorhoz
Ha egy üzenetet be szeretne szúrni egy meglévő üzenetsorba, először hozzon létre egy újat CloudQueueMessage. Ezután hívja meg a metódust addMessage . A CloudQueueMessage létrehozható egy sztringből (UTF-8 formátumban) vagy egy bájttömbből. Az alábbi példakód egy üzenetsort hoz létre (ha nem létezik), és beszúrja az üzenetet Hello, World.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Create the queue if it doesn't already exist.
queue.createIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.addMessage(message);
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Betekintés a következő üzenetbe
Az üzenetsor elején lévő üzenetbe anélkül is betekinthet, hogy a hívással peekMessageeltávolítaná azt az üzenetsorból.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Peek at the next message.
CloudQueueMessage peekedMessage = queue.peekMessage();
// Output the message value.
if (peekedMessage != null)
{
System.out.println(peekedMessage.getMessageContentAsString());
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Üzenetsorban található üzenet tartalmának módosítása
Az alábbi kódminta megkeresi az üzenetsorban az első üzenettartalmat, amely egyezik a Hello, world kifejezéssel, módosítja az üzenet tartalmát, és kilép.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// The maximum number of messages that can be retrieved is 32.
final int MAX_NUMBER_OF_MESSAGES_TO_PEEK = 32;
// Loop through the messages in the queue.
for (CloudQueueMessage message : queue.retrieveMessages(MAX_NUMBER_OF_MESSAGES_TO_PEEK,1,null,null))
{
// Check for a specific string.
if (message.getMessageContentAsString().equals("Hello, World"))
{
// Modify the content of the first matching message.
message.setMessageContent("Updated contents.");
// Set it to be visible in 30 seconds.
EnumSet<MessageUpdateFields> updateFields =
EnumSet.of(MessageUpdateFields.CONTENT,
MessageUpdateFields.VISIBILITY);
// Update the message.
queue.updateMessage(message, 30, updateFields, null, null);
break;
}
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Az alábbi kódminta csak az üzenetsor első látható üzenetét frissíti.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve the first visible message in the queue.
CloudQueueMessage message = queue.retrieveMessage();
if (message != null)
{
// Modify the message content.
message.setMessageContent("Updated contents.");
// Set it to be visible in 60 seconds.
EnumSet<MessageUpdateFields> updateFields =
EnumSet.of(MessageUpdateFields.CONTENT,
MessageUpdateFields.VISIBILITY);
// Update the message.
queue.updateMessage(message, 60, updateFields, null, null);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Az üzenetsor hosszának lekérése
A downloadAttributes metódus több értéket kér le, köztük az üzenetsorban lévő üzenetek számát is. A szám csak hozzávetőleges, mert az üzenetek a kérés után hozzáadhatók vagy eltávolíthatók. A getApproximateMessageCount metódus a Queue Storage meghívása nélkül adja vissza a hívás downloadAttributesáltal lekért utolsó értéket.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Download the approximate message count from the server.
queue.downloadAttributes();
// Retrieve the newly cached approximate message count.
long cachedMessageCount = queue.getApproximateMessageCount();
// Display the queue length.
System.out.println(String.format("Queue length: %d", cachedMessageCount));
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
A következő üzenet kiolvasása
A kód két lépésben lekérdez egy üzenetet egy üzenetsorból. Amikor felhívja retrieveMessage, megkapja a következő üzenetet egy sorban. A visszaadott retrieveMessage üzenet láthatatlanná válik az üzenetsorból érkező üzeneteket olvasó többi kód számára. Alapértelmezés szerint az üzenet 30 másodpercig marad láthatatlan. Az üzenet üzenetsorból való eltávolításának befejezéséhez meg kell hívnia a deleteMessage-t is. Ha a kód nem tud feldolgozni egy üzenetet, ez a kétlépéses folyamat biztosítja, hogy ugyanazt az üzenetet kapja, és próbálkozzon újra. A kód közvetlenül az üzenet feldolgozása után hívja a deleteMessage.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve the first visible message in the queue.
CloudQueueMessage retrievedMessage = queue.retrieveMessage();
if (retrievedMessage != null)
{
// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
További lehetőségek az üzenetek törlésére
Az alábbi példakód 20 üzenet lekérésére használja a retrieveMessages metódust egy hívásban. Ezután for egy hurok használatával dolgozza fel az üzeneteket. Emellett a láthatatlanság időtúllépését öt percre (300 másodpercre) állítja az egyes üzenetekhez. Az időkorlát az összes üzenetnél egyszerre kezdődik. Ha a hívás retrieveMessagesóta öt perc telt el, a nem törölt üzenetek újra láthatók lesznek.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds.
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Az üzenetsorok listázása
Az aktuális üzenetsorok listájának lekéréséhez hívja meg a CloudQueueClient.listQueues() metódust, amely egy objektumgyűjteményt CloudQueue ad vissza.
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient =
storageAccount.createCloudQueueClient();
// Loop through the collection of queues.
for (CloudQueue queue : queueClient.listQueues())
{
// Output each queue name.
System.out.println(queue.getName());
}
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}
Sor törlése
Ha törölni szeretne egy üzenetsort és az abban található összes üzenetet, hívja meg az deleteIfExists objektum metódusát CloudQueue .
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client.
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.getQueueReference("myqueue");
// Delete the queue if it exists.
queue.deleteIfExists();
}
catch (Exception e)
{
// Output the stack trace.
e.printStackTrace();
}